共用方式為


sp_createstats (Transact-SQL)

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

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

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

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

Transact-SQL 語法慣例

語法

sp_createstats
    [ [ @indexonly = ] 'indexonly' ]
    [ , [ @fullscan = ] 'fullscan' ]
    [ , [ @norecompute = ] 'norecompute' ]
    [ , [ @incremental = ] 'incremental' ]
[ ; ]

引數

[ @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 選項。 @incremental為 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