The forum will experience an outage sometime between February 10 at 7:00pm EST and February 12 at 11:59 EST for installation of security updates. The actual time and duration of the outage are unknown but attempts will be made to minimize the downtime. We apologize for any inconvenience.

So I am trying to optimize this query so it can run more efficient... I feel that the nested query is what is really dragging the time on. Any suggestions to optimize it?

  SELECT 
            CAST (f.pc_id AS INT) AS 'PC_ID'
           ,42 AS account_id
           ,CAST (CAST ([year] AS VARCHAR (4)) + RIGHT('0' + CAST (period AS VARCHAR (2)), 2) AS INT) AS period_pk
           ,CASE WHEN f.totalSales <> 0 
                    THEN (  SELECT   SUM(amount)
                            FROM     dbo.factActualData AS fa with (nolock)
                            WHERE   f.pc_id = fa.pc_id
                            AND f.year = fa.year
                            AND fa.period = fa.period 
                            AND fa.account_id in (8,34)) / f.totalSales 
                ELSE 0 
            END AS 'amount'
    FROM   dbo.factActualData AS f WITH (NOLOCK)
    inner join dbo.factActualData as f1 with (NOLOCK)

WHERE  (CAST (CAST ([year] AS VARCHAR (4)) + RIGHT('0' + CAST (period AS VARCHAR (2)), 2) AS INT))
     <> (SELECT FISCAL_PERIOD_PK FROM bs_tracking.CurrentFiscalPeriod WITH (NOLOCK))

asked 30 Jun '10, 15:09

chipShot's gravatar image

chipShot
31111
accept rate: 0%

Did you find a resolution? (the background nanny process called "Community" has popped this question to the top)

(29 Jul '10, 15:57) Breck Carter

What SQL Anywhere version are you running?

Can you post a graphical plan with statistics of the query, along with the CREATE TABLE statements for the 3 tables involved?

I also note you are using the "dbo" userid - this isn't recommended. The "dbo" user is used as a system userid in SQL Anywhere that has fewer restrictions than SYS.

permanent link

answered 30 Jun '10, 16:35

Glenn%20Paulley's gravatar image

Glenn Paulley
10.7k568104
accept rate: 43%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×19
×13
×3

question asked: 30 Jun '10, 15:09

question was seen: 895 times

last updated: 11 Aug '10, 19:23