WEBエンジニアのメモブログ

いろいろ書いていきます。このブログを見た人がなんらかのお役に立てば幸いです。

【データベース】インデックスについて

SQLにインデックスという機能があり、SQLチューニングには欠かせない機能です。
辞書の目次みたいなもので検索を早くします。
ですが やみくもに作れば良いと
いうわけではありません。


インデックスを作成する列として適不適を判断するための
最も重要な情報はカーディナリティです。

特定の列の値が、どれくらいの種類の多さを持つかという意味です。

簡単な例を出します。

性別」の場合 男と女がという2種類の値があります。

この列が10万行あったとしても 男と女の2種類しかないわけで
この場合 カーディナリティが低いと言えます。

しかし、電話番号ならどうでしょうか?
こちらは複数の種類がありますよね

電話番号は絶対に被らないので10万行あったら
カーディナリティが高いと言えます。

このようにインデックスを作成する際はこうした
カーディナリティが高い列を選ぶことが基本です。

ただし、値が偏らず、平均的に分散していることがベストです。