統計情報とは
実行計画を練るためのネタ元。
- 各テーブルのレコード数
- 各テーブルの列数と列のサイズ
- 列値のカーディナリティ(値の個数)
- 列値のデータ分布(どの値がいくつあるかのヒストグラム)
- 列内のNULLの数
- インデックス情報
カーディナリティの補足
カーディナリティは例えば、下記は値が3種類あるので3。
店鋪コード |
---|
10 |
20 |
30 |
ヒスグラムの補足
ヒストグラムは例えば、下記は01が3。02が2。03が1。というように同じ値の個数。
店鋪コード |
---|
10 |
10 |
10 |
20 |
20 |
30 |
例:列値のデータ分布(どの値がいくつあるかのヒストグラム)
店舗コード 0001がTableAに1万個
店舗コード 0002がTableAに5千個
みたいに統計情報に登録できる。
この統計情報をもとに実行計画を作ってくれる。
店舗コード 0001が1万個かあじゃあWhere句で「店舗コード = 0001」が指定されたら気合い入れて検索せんとなあ。
じゃあCPUを並列で複数実行したろ!
みたいな。
実行計画を見るとparallel~というのが並列実行。
SSMSだとインデックスフォルダの中に統計情報が入っている。