我在一個巨大的SQL Server表上有一個性能問題。我們有這個疑問:SQL Server查詢性能替代(在LIKE狀態員中連接字符串)
條件後SELECT cycle
FROM product AS pr
INNER JOIN productdetails AS prd
ON prd.label = 'XRT354511'
AND (pr.cycle = prd.cycle OR prd.cycle LIKE pr.cycle+ '-EXECUTED%')
OR語句使用喜歡來連接與-EXECUTED產品表週期(我們不關心週期「-EXECUTED」的位置,我們只需要知道,如果循環包含-EXECUTED)。
然後,我的建議來解決這個問題是改變這個一個查詢:
SELECT cycle
FROM product AS pr
INNER JOIN productdetails AS prd
ON prd.label = 'XRT354511'
AND (pr.cycle = prd.cycle
OR (pr.cycle = prd.cycle AND pr.cycle LIKE '-EXECUTED%'))
當我執行的第二個查詢,它運行非常快,平穩。
我的建議是否有效?我可以使用我的建議並獲得與第一個查詢相同的結果嗎?
感謝
邏輯在我看來不同。也許你應該包含一些實際的數據,這樣我們可以看到如何改進第一個查詢。如果第二個查詢返回相同的結果並且性能更好,那麼當然使用它。 –
這些查詢將返回兩個不同的結果 –
您確定查詢返回相同的結果集嗎?我會非常小心括號和AND/OR運算符。 –