我的目標RDBMS是SQL Server 2012 - 但我對此處的一般響應感興趣。WHERE在執行SQL UPDATE之前過濾的好處
讓我們看看下面的SQL UPDATE子句:
UPDATE MyTable SET Active = 0 WHERE EffectiveDate < GETDATE()
假設可能有很多條目MyTable的其中活動已經被設置爲「0」的往事,會不會有任何巨大的性能優勢以這種方式執行更新?
UPDATE MyTable SET Active = 0 WHERE EffectiveDate < GETDATE() AND Active = 1
取決於您的索引是如何製作的。 – Crono
Crono - 我高度懷疑可能是這種情況。我猜測在這樣的情況下,一般的「最佳做法」是使用我的第二個變體 - 對嗎? – DanP
可能,是的。但是如果你的表有數百萬條記錄,並且活動字段上沒有索引,那麼你可能會開始感覺到不同。我建議你確保Active字段先被索引,然後是你的第二個變體將是最好的方法。 – Crono