-4
我想知道哪一個在理論上快得多?「DELETE TOP(1)FROM @TEMP」或「DELETE FROM #TEMP WHERE ..」更快嗎?
IF EXISTS(SELECT TOP 1 1 FROM @ControlOrderList)
BEGIN
SET @RowNumber= (SELECT TOP 1 id FROM @ControlOrderList)
...
DELETE @ControlOrderList WHERE [email protected]
END
還是這快得多?
IF EXISTS(SELECT TOP 1 1 FROM @ControlOrderList)
BEGIN
SET @RowNumber= (SELECT TOP 1 id FROM @ControlOrderList)
...
DELETE TOP 1 @ControlOrderList
END
並且使用DELETE TOP 1安全嗎?我可以信任SQL-SERVER刪除「SELECT TOP 1 .....」中的行嗎?
第二條語句是否真的有效?要比較查詢,只需查看他們的實際執行計劃並查看哪些操作員成本最低 –
不要在沒有指定訂單的情況下使用「top N」,而在第二種情況下,您不能保證您將同一行。 – Arvo
我建議你不要再要求我們幫助你學習成千上萬的「X比Y更快」的規則,因爲通常有很多細微之處,而且你不會通過記憶成千上萬的規則來編寫性能良好的代碼。你可以通過寫*清*代碼來完成正確的任務,然後*測量*性能。如果它符合你的*要求*,不要擔心你是否可以更快地寫下它。或者換一種說法,請閱讀Eric Lippert的[哪個更快?](https://ericlippert.com/2012/12/17/performance-rant/) –