為什麼使用SELECT TOP 100 Percent
在SQL Server 2005 之前,在SELECT 子句中使用TOP 100 PERCENT 以按情況啟用排序查看定義。然而,即使在現代環境中的動態 SQL 語句中,這種做法仍然存在。
中間實作
使用 TOP 100 PERCENT 的主要原因是「中間實作」。正如 Adam Machanic 所解釋的那樣,該技術會暫時假脫機查詢結果,從而實現更有效率的後續處理。具體來說,它支援對中間結果集進行逐行處理,這可以優化某些場景下的效能。
範例
考慮以下查詢:
SELECT foo FROM (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar WHERE CAST(foo AS int) > 100
在SQL Server 2000 中,此查詢可能會因為不可預測的計算順序而失敗。 TOP 100 PERCENT 可用於強制執行逐行處理,確保結果與透過順序執行查詢獲得的結果相同:
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 SELECT foo FROM bar WHERE CAST(foo AS int) > 100
此行為在SQL Server 2005 中繼續有效,儘管引入更複雜的最佳化
注意事項
雖然SELECT TOP 100 PERCENT 可在特定情況下提供性能優勢,但應謹慎使用。補丁等級、架構、索引或行計數的變更可能會無意中改變其對效能的影響。因此,在使用此技術之前,有必要充分了解其後果。
以上是為什麼在 SQL 查詢中使用「SELECT TOP 100 PERCENT」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!