我有这样的查询:
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
如果这些都没有帮助,要么编辑这个问题,要么问一个包含表结构、索引、查询计划和统计数据输出的新问题。