bigmac-jp blog

web開発関連のメモ

MySQL メモ10 カーディナリティ

カーディナリティ

カーディナリティが高い

 データの分布が広いデータ。プライマリーキー、ユニークキーなど。
 

カーディナリティが低い

 データの分布が狭い。例えば、性別フラグは0:女、と1:男の2パターンしかないため、カーディナリティは低い。


一般的にはカーディナリティが低いカラムにはIndexは張らないことになっている。
その理由はカーディナリティ低い = 絞り込みができないから取得結果が大きいため。
使われないIndexは、Update、Insert、Delete時のパフォーマンスに影響があるため、不要なIndexは作らないことが正しい。

ただし、カーディナリティが低い場合でもIndexは使われることもある。
削除フラグ(0:未削除、1:削除)の場合はカーディナリティは低いことになる。
削除フラグ:0のレコードが100万件、削除フラグ:1のレコードが100件の場合に、削除フラグ:1のデータ抽出をする場合はIndexが有効活用される場合もある。