- PR -

【統計情報】_WA_SYS_XXXについて

1
投稿者投稿内容
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 2005-04-04 14:55
おつかれさまです。

カラムにインデックスを作成した場合、統計情報自動更新をオンにすると、統計情報が自動的に作成されるのでしょうか?
sp_autostats では統計情報と主キーなどが表示され、sp_helpindexでは主キーなど明示的に作成したインデックスだけ表示されます。

インデックスと統計情報がごちゃごちゃになって混乱していますが、
「統計情報は、オプティマイザに現データ量やインデックスの有無や分布が格納されるので、インデックスには統計情報が必須である。」
という解釈でおります。オラクルのヒストグラムのようなものなのでしょうか?
どうぞよろしくお願いします。

[環境]Microsoft SQL Server 2000 SP3
matu_tak
会議室デビュー日: 2003/02/06
投稿数: 13
投稿日時: 2005-04-06 18:46
松本です。

> カラムにインデックスを作成した場合、統計情報自動更新をオンにすると、
> 統計情報が自動的に作成されるのでしょうか?
>
はい、インデックスを作成したカラムには
統計情報が自動作成されます。
作成された統計の名前は、インデックス名と同じになります
(主キー制約 or UNIQUE 制約の場合は制約名と同じ名前になります)。
また、_WA_Sys_XXX という統計は、インデックスが作成されていない列を
検索条件に使った場合に自動作成される統計です。
例えば、WHERE B=xxx という検索を行なったときに、B 列にインデックスが
作成されていない場合は、_WA_Sys_B_XXX という統計が作成されます。
この統計は、使われなくなった場合には、自動的に削除されるのでほっておいても
問題ありません。明示的に削除したい場合は DROP STATISTICS を使います。

また、統計の名前や、統計を自動更新するかどうかは、sp_autostats システム
ストアドプロシージャを使えば確認できます。
sp_helpstats やクエリアナライザの「ツール」メニューの「統計の管理」だと、
インデックスに自動作成された統計は表示されないので、注意が必要です。

> オラクルのヒストグラムのようなものなのでしょうか?
>
はい、同じ役割です。
統計は、コストベースのオプティマイザが利用する情報になります。

ちなみに、統計の中身を確認するコマンドは

DBCC SHOW_STATISTICS(テーブル名, 統計名)

です(ヒストグラムを確認できます)。

ご参考までに、そのほか統計に関する資料です。

MSKB [INF] SQL Server 7.0 と SQL Server 2000 の Autostats の詳細な動作
http://support.microsoft.com/?id=195565

アーキテクチャ徹底解説 Microsoft SQL Server 2000 第 15 章 クエリプロセッサ
http://www.microsoft.com/japan/technet/prodtechnol/sql/books/insidesql/default.asp

Microsoft SQL Server 2000 のクエリ オプティマイザで使用する統計
http://www.microsoft.com/japan/msdn/sqlserver/sql2000/statquery.asp
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 2005-05-05 00:50
ご回答、ありがとうございました。お礼が遅くなりましてすみませんです。
1

スキルアップ/キャリアアップ(JOB@IT)