2015-08-28 88 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

如果這些不起作用,請編輯此問題或詢問一個包含表結構,索引,查詢計劃和統計數據輸出的新問題。

相關問題