簡體   English   中英

如何優化這個select語句?

[英]How to optimise this select statement?

下面的語句需要將近 2 分鍾的時間來執行,當使用相同的表和視圖並具有相同結果的略有不同的 select 語句執行一半時:

SELECT
@NEW_CAREER_NUMBER = MAX(a.[career number])
FROM selecthr20.employee.[career history] a 
    INNER JOIN selecthr20.Employee.[Current Appointments As At Evaluation Date] b
        ON a.[appointment number] = b.[appointment number]  
    INNER JOIN Employee.[BSK Changes in Selected Period] c
        ON a.[career number] = c.[primary key number]
    INNER JOIN selecthr20.employee.[career history extra detail] d
        ON a.[career number] = d.[career number]
            AND c.[primary key number] = d.[career number]
where c.[primary key name] = 'Career Number'
and c.[audit date] < (Select max([audit date]) from Employee.[BSK Changes in Selected Period] where [primary key number] = @LATEST_CAREER_NUMBER)
and b.[person number] = @PERSON_ID

'[BSK在Selected Period的變化] c'是一個視圖,其余都是表。

你在 d join 上有一個多余的條件
試試這個

SELECT
@NEW_CAREER_NUMBER = MAX(a.[career number])
FROM selecthr20.employee.[career history] a 
JOIN selecthr20.Employee.[Current Appointments As At Evaluation Date] b
      ON b.[appointment number] = a.[appointment number] 
     and b.[person number]      = @PERSON_ID  
JOIN selecthr20.employee.[career history extra detail] d
      ON d.[career number] = a.[career number] 
JOIN Employee.[BSK Changes in Selected Period] c
      ON c.[primary key number] = a.[career number] 
     and c.[primary key name]   = 'Career Number'
     and c.[audit date] < ( Select max([audit date])   
                              from Employee.[BSK Changes in Selected Period]
                             where [primary key number] = @LATEST_CAREER_NUMBER );

自然地在連接條件上放一個索引

如果您在 c 連接上有一個循環,則使用一個變量作為審計日期
我會這樣做 - 幾乎沒有不利的一面

declare @auditdate DateTime = ( Select max([audit date]) 
                                  from Employee.[BSK Changes in Selected Period] 
                                 where [primary key number] = @LATEST_CAREER_NUMBER );

... 

and c.[audit date] < @auditdate 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM