Sql-Server
SELECT 語句中的 OPTION FAST 有什麼作用?
我已經對
OPTION (FAST XXX)
查詢提示在SELECT
語句中的作用進行了一些探勘,但我仍然對此感到困惑。根據 MSDN:指定查詢已針對第一個 number_rows 的快速檢索進行了優化。這是一個非負整數。返回第一個 number_rows 後,查詢繼續執行並生成完整的結果集。
對我來說這沒有多大意義,但基本上查詢可以真正快速地獲得前 XXX 行,然後以正常速度獲得其餘行?
讓我想到這一點的 Microsoft Dynamics 查詢是:
select pjproj.project,pjproj.project_desc,pjproj.customer,pjproj.cpnyid from pjproj WITH (NOLOCK) where project like '%' order by project OPTION(FAST 500)
誰能準確解釋這個查詢提示在做什麼以及它比不使用它的優勢?
A
FAST N
將告訴 SQL Server 生成一個執行計劃,并快速返回定義為的行數N
。
N
請注意,由於您告訴 sql serverN
盡可能快地檢索行,因此估計值將根據。例如,使用以下查詢執行
fast 500
:-- total rows : 19972 SELECT [BusinessEntityID] ,[TotalPurchaseYTD] ,[DateFirstPurchase] ,[BirthDate] ,[MaritalStatus] ,[YearlyIncome] ,[Gender] ,[TotalChildren] ,[NumberChildrenAtHome] ,[Education] ,[Occupation] ,[HomeOwnerFlag] ,[NumberCarsOwned] FROM [AdventureWorks2012].[Sales].[vPersonDemographics] order by BusinessEntityID option (fast 500)
估計與實際行
option (fast 500)
沒有的 Est vs 實際行
option (fast 500)
一個案例是當應用程序進行記憶體(在後台載入大量數據)並希望盡快向使用者顯示一段數據時。
另一個有趣的案例是在SSIS 領域,Rob Farley將其描述
FAST N
為加速數據檢索的催化劑。通過添加此提示,感覺就像一根魔杖在查詢中揮動,使其執行速度提高數倍。
另請參閱Remus Rusanu 的回答。