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