我們有以下查詢。使用LEFT OUTER連接需要9秒鐘才能執行。將LEFT OUTER更改爲LEFT INNER會將執行時間縮短爲2秒,並返回相同的行數。由於正在處理與dbo.Accepts表相同數量的行,因此無論連接類型如何,外層爲什麼會延長3倍?左內連接與左外連接 - 爲什麼外層需要更長的時間?
SELECT CONVERT(varchar, a.ReadTime, 101) as ReadDate,
a.SubID,
a.PlantID,
a.Unit as UnitID,
a.SubAssembly,
m.Lot
FROM dbo.Accepts a WITH (NOLOCK)
LEFT OUTER Join dbo.Marker m WITH (NOLOCK) ON m.SubID = a.SubID
WHERE a.LastModifiedTime BETWEEN @LastModifiedTimeStart AND @LastModifiedTimeEnd
AND a.SubAssembly = '400'
我沒有意識到有這樣的事情,作爲'左內聯接'。它有什麼作用? – 2010-03-05 19:07:13
我懷疑'LEFT INNER'的'LEFT'被剝離了,它只是一個'INNER JOIN'。 – 2010-03-05 19:08:01
使用SQL Server 2005,我無法使用'LEFT INNER JOIN'運行查詢 - 我在關鍵字'INNER'附近收到「語法錯誤」錯誤。你使用的是什麼版本的SQL Server?如果2005+,你是否在降級兼容級別運行? – 2010-03-05 19:11:44