【问题标题】:QUERY SOLUTION is slow查询解决方案很慢
【发布时间】:2015-11-22 19:27:01
【问题描述】:

我有这个问题:

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 之间的连接存在速度问题

【问题讨论】:

  • SO 是英文的,请使用那个语言!
  • mysqlsql-server 与非常不同的 DBMS。
  • 是 MySQL 还是 SQL Server 慢? (两种不同的产品,优化技术略有不同。)
  • jQuery 在这个查询中做了什么?

标签: sql sql-server inner-join


【解决方案1】:

没有更多细节,只能给出一般性的想法:

  • 查看查询计划和统计信息输出。这应该告诉你问题出在哪里
  • 很可能您缺少一个或几个索引并在大表上进行扫描,或者您甚至可能因此而有一个假脱机。
  • 根据选择性,可能应该对其中的一些或全部进行索引:D_EFFETTIVO_ARRIVO、D_PREVISTO_ARRIVO、I_ID_PORTO
  • 对于连接,还要检查 OLbia.dbo.NAVI.N_ident_seguenziale 和 FOTO_NAVI.dbo.NAVI.imo 的索引

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2014-06-06
    • 2011-09-29
    • 2011-07-22
    • 1970-01-01
    相关资源
    最近更新 更多