分享方式:


sp_createstats (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體

呼叫 CREATE STATISTICS 語句,在尚未是統計數據物件中第一個數據行的數據行上建立單一數據行統計數據。 建立單一數據行統計數據會增加直方圖的數目,這可以改善基數估計值、查詢計劃和查詢效能。 統計數據物件的第一個數據行具有直方圖;其他數據行沒有直方圖。

sp_createstats對於查詢運行時間至關重要且無法等候查詢優化器產生單一數據行統計數據等應用程式很有用。 在大部分情況下,不需要使用sp_createstats;當 [AUTO_CREATE_STATISTICS] 選項開啟時,查詢優化器會視需要產生單一數據行統計數據,以改善查詢計劃。

如需統計資料的詳細資訊,請參閱統計資料。 如需產生單一數據行統計數據的詳細資訊,請參閱 ALTER DATABASE SET Options (Transact-SQL) 中的 AUTO_CREATE_STATISTICS 選項。

Transact-SQL 語法慣例

語法

  
sp_createstats   
    [   [ @indexonly =   ] { 'indexonly'   | 'NO' } ]   
    [ , [ @fullscan =    ] { 'fullscan'    | 'NO' } ]   
    [ , [ @norecompute = ] { 'norecompute' | 'NO' } ]  
    [ , [ @incremental = ] { 'incremental' | 'NO' } ]  

引數

[ @indexonly = ] 'indexonly' 只在現有索引中的數據行上建立統計數據,而不是任何索引定義中的第一個數據行。 indexonlychar(9)。 預設值為 NO。

[ @fullscan = ] 'fullscan'使用 CREATE STATISTICS 語句搭配 FULLSCAN 選項。 fullscanchar(9)。 預設值為 NO。

[ @norecompute = ] 'norecompute'使用 CREATE STATISTICS 語句搭配 NORECOMPUTE 選項。 norecomputechar(12)。 預設值為 NO。

[ @incremental = ] 'incremental'使用 CREATE STATISTICS 語句搭配 INCREMENTAL = ON 選項。 累加 式為 char(12)。 預設值為 NO。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

每個新的統計數據對象的名稱與建立所在的數據行相同。

備註

sp_createstats不會在現有統計數據物件中第一個數據行的數據行上建立或更新統計數據;這包括針對索引建立的第一個統計數據數據行、具有單一數據行統計數據 AUTO_CREATE_STATISTICS的數據行,以及使用 CREATE STATISTICS 語句建立的第一個統計數據數據行。 除非在另一個啟用的索引中使用該數據行,否則sp_createstats不會在停用索引的第一個數據行上建立統計數據。 sp_createstats不會在具有已停用叢集索引的數據表上建立統計數據。

當數據表包含數據行集時,sp_createstats不會在疏鬆數據行上建立統計數據。 如需數據行集和疏鬆數據行的詳細資訊,請參閱 使用數據行集 和使用 疏鬆數據行。

權限

需要 db_owner 固定資料庫角色中的成員資格。

範例

A. 在所有合格數據行上建立單一數據行統計數據

下列範例會針對目前資料庫中所有合格數據行建立單一數據行統計數據。

EXEC sp_createstats;  
GO  

B. 在所有合格索引數據行上建立單一數據行統計數據

下列範例會針對已經在索引中的所有合格數據行建立單一數據行統計數據,而不是索引中的第一個數據行。

EXEC sp_createstats 'indexonly';  
GO  

另請參閱

統計資料
CREATE STATISTICS (Transact-SQL)
ALTER DATABASE SET 選項 (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL)
DROP STATISTICS (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
資料庫引擎 預存程式 (Transact-SQL)
系統預存程序 (Transact-SQL)