查询解决方案速度慢



我有这样的查询:

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之间的连接

没有更多的细节,只能给出大致的想法:

  • 查看查询计划和统计输出。这会告诉你问题在哪里
  • 很可能你丢失了一个或几个索引,并且正在对大表进行扫描,或者你甚至可能因此而有一个假轴。
  • 根据选择性,可能需要对其中的一些或全部进行索引:D_EFFETTIVO_ARRIVO, D_PREVISTO_ARRIVO, I_ID_PORTO
  • 对于连接,也检查OLbia.dbo.NAVI的索引。N_ident_seguenziale和FOTO_NAVI.dbo.NAVI.imo

如果这些都没有帮助,要么编辑这个问题,要么问一个包含表结构、索引、查询计划和统计数据输出的新问题。

最新更新