1
我有2个SQL查询做同样的事情,第一个查询需要13秒执行,而第二个需要1秒执行。任何理由?SQL连接运行缓慢
没必要在所有的ProcessMessages ID将在ProcessMessageDetails
数据 - 需要13秒来执行秒下
Select * from dbo.ProcessMessages t1
join dbo.ProcessMessageDetails t2 on t1.ProcessMessageId = t2.ProcessMessageId
Where Id = 4 and Isdone = 0
--takes执行
Select * from dbo.ProcessMessageDetails
where ProcessMessageId in (Select distinct ProcessMessageId from dbo.ProcessMessages t1
Where Where Id = 4 and Isdone = 0)
我在t1.processMessageId(Pk)上具有群集索引,在t2.processMessageId(FK)上具有非群集索引
从什么表是ID和ISDONE来源?在第一个中,你有一个1-M连接被解析,而在第二个连接中,引擎不需要连接这些表。 – xQbert
Id和Isdone来源于dbo.ProcessMessages t1。我为Id和IsDone创建了非聚集索引 – user1005310
您可以添加执行计划吗? – Naruto