QUERY SOLUTION很慢

时间:2015-08-28 07:46:38

标签: sql sql-server inner-join

我有这个问题:

select          
   t1.IMMAGINE as r1 ,
   t1.NOME as r2,
   t1.IMO as r3
from
   FOTO_NAVI.dbo.NAVI as t1 
   INNER JOIN 
   (
       select 
           distinct t3.IMO
       from 
       (
           select 
               I_ID_NAVE,
               D_PREVISTO_ARRIVO,
               I_ID_PORTO               
           from 
               Olbia.dbo.ESTERNALIZZAZIONE_FASCICOLINAVE as tint
           where
               tint.D_EFFETTIVO_ARRIVO IS NULL and
               tint.D_PREVISTO_ARRIVO>GETDATE()-1 AND            
               tint.I_ID_PORTO=42104    
       )as t2
       inner join OLbia.dbo.NAVI as t3      
           on t3.N_ident_seguenziale=t2.I_ID_NAVE
  ) AS T4
      on T4.imo= t1.imo
order by t1.IMO

大家好,这太慢了,你能加快速度吗?速度问题我相信t4和t1之间的连接

1 个答案:

答案 0 :(得分:0)

如果没有更多细节,它只能提供一般性的想法:

  • 查看查询计划和统计信息输出。这应该告诉你问题出在哪里
  • 很可能你错过了一个或多个索引并在大表上进行扫描,或者你甚至可能因为这个原因而有一个假脱机。
  • 根据选择性,可能应将部分或全部索引编入索引:D_EFFETTIVO_ARRIVO,D_PREVISTO_ARRIVO,I_ID_PORTO
  • 对于联接,请检查OLbia.dbo.NAVI.N_ident_seguenziale和FOTO_NAVI.dbo.NAVI.imo的索引

如果这些没有帮助,请编辑此问题或询问包含表结构,索引,查询计划和统计信息输出的新问题。