共用方式為


sp_createstats (Transact-SQL)

呼叫 CREATE STATISTICS 陳述式,以便針對在統計資料物件中尚未成為第一個資料行的資料行建立單一資料行統計資料。建立單一資料行統計資料會增加長條圖的數目,而且可能會改善基數估計值、查詢計畫和查詢效能。統計資料物件的第一個資料行具有長條圖,但其他資料行則沒有長條圖。

當查詢執行時間很重要而且無法等候查詢最佳化工具產生單一資料行統計資料時,sp_createstats 對於效能評定等應用程式會很有用。在大部分情況下,您不需要使用 sp_createstats。當 AUTO_CREATE_STATISTICS 選項已開啟時,查詢最佳化工具會視需要產生單一資料行統計資料,以便改善查詢計畫。

如需有關統計資料的詳細資訊,請參閱<使用統計資料來改善查詢效能>。如需有關產生單一資料行統計資料的詳細資訊,請參閱<ALTER DATABASE SET 選項 (Transact-SQL)>中的 AUTO_CREATE_STATISTICS 選項。

主題連結圖示Transact-SQL 語法慣例

語法

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

引數

  • [ @indexonly= ] 'indexonly'
    僅針對位於現有索引中而且不是任何索引定義中第一個資料行的資料行建立統計資料。indexonly 是 char(9)。預設值是 NO。

  • [ @fullscan= ] 'fullscan'
    使用 CREATE STATISTICS 陳述式搭配 FULLSCAN 選項。fullscan 是 char(9)。預設值是 NO。

  • [ @norecompute= ] 'norecompute'
    使用 CREATE STATISTICS 陳述式搭配 NORECOMPUTE 選項。norecompute 是 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