cursor threshold 選項

使用 cursor threshold 選項可指定資料指標集中以非同步方式產生資料指標索引鍵集的列數。當資料指標為結果集產生索引鍵集時,查詢最佳化工具會估計將在該結果集傳回的資料列數。如果查詢最佳化工具估計將傳回的列數會大於這個臨界值,就會以非同步方式產生資料指標,讓使用者在資料指標繼續擴展的同時,可以從資料指標擷取資料列。否則,會以同步的方式產生資料指標,使查詢等到所有資料列都傳回為止。

如果將 cursor threshold 設成 -1,所有索引鍵集都會以同步方式產生,這有益於小型的資料指標集。如果將 cursor threshold 設成 0,所有資料指標索引鍵集都會以非同步方式產生。若使用其他值,查詢最佳化工具會比較資料指標集中預期的列數,如果列數超過 cursor threshold 中設定的數字,就以非同步方式建立索引鍵集。請不要將 cursor threshold 設得太低,因為小的結果集最好是以同步的方式建立。

[!附註]

SQL Server 不支援非同步產生索引鍵集驅動或靜態 Transact-SQL 資料指標。Transact-SQL 資料指標作業 (例如 OPEN 或 FETCH) 一般為批次式;因此,不需要非同步產生 Transact-SQL 資料指標。SQL Server 會繼續支援非同步索引鍵集驅動或靜態應用程式發展介面 (API) 伺服器資料指標,其中低度延遲 OPEN 會是一個顧慮,因為每一個資料指標作業都需要用戶端往返。

查詢最佳化工具用來決定索引鍵集中估計資料列數的精確度,須視資料指標中每個資料表統計資料的準確度而定。

cursor threshold 選項是進階選項。如果您是使用 sp_configure 系統預存程序來變更設定,只有當 show advanced options 設定為 1 時,才能變更 cursor threshold。這個設定會立即生效 (不需重新啟動伺服器)。