我創建的存儲過程有效,但是有沒有更高效的方法來做到這一點?公平地說,沒有任何性能受到影響,也不需要優化,但我想知道爲了正確地做事情。優化存儲過程更新並選擇
執行計劃狀態query 1: 17%
,query 2: 67%
,query 3: 16%
DECLARE @CurrentVoucherID int;
SET @CurrentVoucherID =
(
SELECT TOP(1) IdGiftVoucherPhysicalCode
from GiftVoucherPhysicalCodes
WHERE Activated = 0 and assigned = 0 and Value = 10
ORDER BY IdGiftVoucherPhysicalCode
);
UPDATE GiftVoucherPhysicalCodes
SET Activated = 1, Activated_at = GETDATE()
WHERE IdGiftVoucherPhysicalCode = @CurrentVoucherID;
SELECT * FROM GiftVoucherPhysicalCodes
WHERE IdGiftVoucherPhysicalCode = @CurrentVoucherID;
我看不出有什麼不對的,會做同樣的方式... – Hatsjoem 2014-12-04 19:26:49
謝謝你,給我的印象是,選擇被運行兩次儘管有哪些錯誤會導致我返回相同的記錄。 – GJKH 2014-12-04 19:29:09
但執行計劃沒有考慮內存中的索引。如果IdGiftVoucherPhysicalCode被索引,最後在哪裏尋找一個簡單的索引。 – Paparazzi 2014-12-04 20:11:03