カーディナリティとは
その属性に紐付けられるもののこと
カーディナリティ度 (選択度)
カーディナリティ度が低いとは、カラムの値の種類がレコード数に比べて少ないことをあらわす。
カーディナリティ度が高いとは、カラムの値の種類がレコード数に比べて多いことをあらわす。
種類の絶対数の多少でなく度合いである。
例えば、子供から大人までの場合、性別や血液型などはカーディナリティ度が低く、身長や体重はカーディナリティ度が高い。同じ長さでも、靴のサイズなどはカーディナリティ度が低いといえる。
カーディナリティ度の高いカラムへの B-Tree インデックスは検索操作に対して高い効果がある。(しかし、低い場合は逆効果になる)
カーディナリティ度の低いカラムへの Bitmap インデックスは高い効果がある。ビットマップのジョインが発生する状況になると効果が高い(しかし、B-Tree インデックスに比べてインデックスの更新コストが高い)
カーディナリティ
カラムの値の種類の絶対数をあらわす。(例:人間の性別なら2)
データベースの統計情報として、カーディナリティとヒストグラムは重要な要素である。
その他のカーディナリティ?
Oracle 10g より前のマニュアルにはカーディナリティにも色々な分類があったが、
現在では削除されているようである。混同する不要な情報として扱ったほうがよいのかもしれない。
興味があるならば Oracle 9i のパフォーマンスチューニング・ガイド マニュアルを参照してみてください。
概要
ベース・カーディナリティ … 実表の行数
有効なカーディナリティ … 実表から選択される行数
結合カーディナリティ … 2つの行セットの結合によってできた行数
個別カーディナリティ … 行セットのある列におけるユニークな値の数
グループ・カーディナリティ … GROUP BY 適用後の行数