使用SELECT TOP 100 Percent 進行中間實作
在SQL Server 2005 之前,可以採用一種稱為「中間實作」的技術來強制SQL Server透過在視圖定義中包含TOP 100 PERCENT 來遵守ORDER BY 子句SELECT語句。
但是,它的用途已超出動態 SQL 語句中的視圖定義範圍。在這種情況下,SELECT TOP 100 PERCENT 的主要目的是利用中間物化。此技術涉及透過將 ORDER BY 子句放置在 TOP 100 PERCENT 建構中來建立中間結果集。
此技術可能有用的範例是當您需要對巢狀查詢的結果套用篩選器時。考慮以下查詢:
SELECT foo FROM (SELECT foo FROM MyTable WHERE ISNUMERIC (foo) = 1) bar WHERE CAST(foo AS int) > 100
在此範例中,內部查詢傳回一個結果集,然後在外部查詢中篩選該結果集。但是,內部查詢中的 ORDER BY 子句可能不會被執行,從而導致不可預測的結果。
透過將 SELECT 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
這種中間物化確保內部查詢的結果集在外部查詢中過濾之前進行排序,從而提供所需的結果
需要注意的是,只有在必要時才應謹慎使用此技術,因為伺服器配置的變更(例如修補程式等級、架構、索引、行計數)可能會破壞其功能。
以上是SELECT TOP 100 PERCENT 如何在 SQL Server 中啟用中間實作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!