Sql-Server

SELECT 語句中的 OPTION FAST 有什麼作用?

  • April 18, 2021

我已經對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)

誰能準確解釋這個查詢提示在做什麼以及它比不使用它的優勢?

AFAST 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 的回答

引用自:https://dba.stackexchange.com/questions/135455