generated at
cardinality
tableの特定のcolumnに対する濃度のこと
重複を省いて何種類の値があるかを数値化したもの
1つのtable内の、複数のcolumnのカーディナリティ同士を比較して、相対的に「高い/低い」と言うことになる
だから、table A のcolumn X と、table B のcolumn Y のカーディナリティを比較しても全く無意味


カーディナリティが低い = 種類数が少ない = 重複度が大きい
カーディナリティが高い = 種類数が多い = 重複度が低い



全てのrecordに対して、同じ値が入っている場合は、最もカーディナリティが低い
全てのrecordに対して、異なる値が入っている場合は、最もカーディナリティが高い
table post において、
取りうる genre の種類が5個
取りうる tag の種類が1000個
のような場合、「 genre のカーディナリティは tag のそれに比べて低い」と言える





参考



カーディナリティを考える際に、データのバラツキ度合いも考慮しておく
取りうる値の幅が広い場合でも、偏りが激しいためにカーディナリティが小さくなることもある
例えば、column X の値が、a,a,a,a,...,a,b,cのようなこともある
この場合も、同様に「 X のカーディナリティは低い」のような言い方はできると思う(実際低いので)
ということを考えれば、↓この主張はちょっとおかしい?
>この場合 1 / 365 ≒ 0.27%となるので、インデックスを作成する意味はあるといえるだろう。ref
(まあ、この記事はrecord数に触れてないのでそもそもよくわからんが)
record数が1000件で、その内、636件が「1/1」だった場合、63%までしか絞り込めない