在SQL Server 中使用TOP 100 PERCENT
在SQL Server 2005 之前,可以使用SELECT TOP 100 PERCENT 作為子句技巧在視圖定義中使用ORDER BY 子句。然而,它的用途超出了各種應用程式中動態 SQL 語句中的視圖定義。
中級實作
動態SQL 中SELECT TOP 100 PERCENT 的主要目的是「中間物化。」此技術涉及在最終查詢執行之前建立中間表或查詢結果作為臨時存儲。透過使用 TOP 100 PERCENT,臨時儲存將使用原始查詢中的所有行進行具體化,從而確保保留行的順序。
工作範例
考慮以下查詢:
SELECT foo FROM MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
由於WHERE 和WHERE 之間的計算順序不確定,該查詢可能會失敗ORDER BY 子句。但是,透過使用 TOP 100 PERCENT,以下查詢將起作用:
SELECT foo FROM (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar WHERE CAST(foo AS int) > 100
在 SQL Server 2000 及更早版本中,此技術強制內部查詢的具體化,確保保留行順序。同樣的行為在 SQL Server 2005 中仍然存在。
但是,請務必注意,過度使用 TOP 100 PERCENT 可能會產生性能影響,並且僅應在絕對必要時使用。如果可能的話,最好依賴顯式表格分割區或預存程序進行行排序。
以上是何時以及為何在 SQL Server 中使用「SELECT TOP 100 PERCENT」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!