2015-12-22 76 views
0

该下面的语句正在接近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变化]Ç '是一种观点,其余的都是表格。

+0

您将加入视图并在您的'WHERE'子句中再次选择它,以便可以更改。除此之外,如果不知道您的观点是什么或者您有什么指数,就很难增加太多。 –

+0

这是一个非常广泛的问题......不知道那里有哪些索引等将会使这几乎无法回答。 –

+0

在[dba](http://dba.stackexchange.com)有更好的问题 – davejal

回答

-1

你有在d冗余条件加入
试试这个

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 
+0

来吧投票是什么问题 – Paparazzi