sp_createstats (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure 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' 只在現有索引中的資料行上建立統計資料,而不是任何索引定義中的第一個資料行。 indexonly char(9) 。 預設值為 NO。

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

[ @norecompute = ] 'norecompute'使用 CREATE STATISTICS 語句搭配 NORECOMPUTE 選項。 norecompute char(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)
Database Engine 預存程式 (Transact-SQL)
系統預存程序 (Transact-SQL)