2015-08-28 105 views
-4

我有这个疑问:QUERY的解决方案是缓慢

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

+0

SO是英文版的,请使用该语言! – jarlh

+0

'mysql'或'sql-server'对于非常不同的DBMS。 – Jens

+0

它是MySQL还是SQL Server很慢? (两种不同的产品,有一些不同的优化技巧。) – jarlh

回答

0

之间的连接没有更多的细节这是只可能提供总体思路:

  • 看查询计划和统计IO输出。这应该告诉你问题出在哪里
  • 很可能你错过了一个或几个索引,并且在大表上进行扫描,或者你甚至可能有一个假脱机。
  • 根据选择性,一些或所有这些或许应该被索引:D_EFFETTIVO_ARRIVO,D_PREVISTO_ARRIVO,I_ID_PORTO
  • 对于连接,同时检查索引的OLbia.dbo.NAVI.N_ident_seguenziale和FOTO_NAVI.dbo.NAVI.imo

如果这些不起作用,请编辑此问题或询问一个包含表结构,索引,查询计划和统计数据输出的新问题。

相关问题