[英]Left outer Join query optimization
我不是那么高級的sql用戶。 您能否回顧一下我的以下查詢是否最佳? 或者我可以做一些更優化和更具可讀性的事情?
select Distinct DT.Station , DT.Slot , DT.SubSlot, DT.CompID , CL.CompName
from (
select Station, Slot, SubSlot, CompID
from DeTrace
where DeviceID = '1151579773'
) as DT
Left outer CList as CL
on DT.CompID = CL.CompID
where CL.CompName = '9234220'
order by CompName
感謝幫助。
它更容易閱讀:
select Distinct DT.Station , DT.Slot , DT.SubSlot, DT.CompID , CL.CompName
from DeTrace DT
Left outer join CList as CL
on DT.CompID = CL.CompID
where CL.CompName = '9234220'
and DT.DeviceID = '1151579773'
order by CompName
優化器應該能夠像您一樣有效地執行此查詢,但您應該檢查查詢執行計划以確保。
為什么不呢:
SELECT DISTINCT DT.Station , DT.Slot , DT.SubSlot, DT.CompID , CL.CompName
FROM DeTrace DT
LEFT OUTER JOIN CList CL ON DT.CompID = CL.CompID
AND DT.DeviceID = '1151579773'
AND CL.CompName = '9234220'
ORDER BY CL.CompName
我認為你不需要子查詢。 檢查如下:
select Distinct DT.Station , DT.Slot , DT.SubSlot, DT.CompID , CL.CompName
from DeTrace as DT
Left outer CList as CL
on DT.CompID = CL.CompID
where CL.CompName = '9234220' and DeviceID = '1151579773'
order by CompName
我最喜歡這種方式:
SELECT DISTINCT
DeTrace.Station,
DeTrace.Slot,
DeTrace.SubSlot,
DeTrace.CompID,
CL.CompName
FROM
DeTrace
LEFT OUTER JOIN
CList AS CL ON
DeTrace.CompID = CL.CompID
WHERE
DeviceID = '1151579773' AND
CL.CompName = '9234220'
ORDER BY
CL.CompName
select Distinct DT.Station , DT.Slot , DT.SubSlot, DT.CompID , CL.CompName
from DeTrace DT
Left outer join CList as CL
on DT.CompID = CL.CompID
where DT.DeviceID = '1151579773'
and CL.CompName = '9234220'
order by CL.CompName
基於Sql Server Cost的優化器應該能夠確定應用條件的最有效順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.