カーディナリティとは
カーディナリティとはDBの特定のカラムがもつ値の種類の絶対数のことになります。例であげるとすると「性別」であれば「2」となります。
カーディナリティの「低い」「高い」
例えば例にもあげた「性別」であれば登録がどんなに増えても種類は2種類しかありません。種類が少ない場合カーディナリティは「低い」と言います。
例えば、日で言えば一年365日ありますので、365の種類があります。種類が多い場合カーディナリティは「高い」と言います。
カーディナリティとインデックス
このカーディナリティの「低い」「高い」はインデックスを貼る際にとても重要になってきます。基本、インデックスはカーディナリティの「高い」ところに貼るべきだと言われています。
例えば、性別にインデックスを貼ったとしても、絞り込めるのは全体の50%にしかならず、全然絞り込めていない状態になります。代わりに日でインデックスを貼った場合、1/365=0.273%まで絞り込むことができます。目安的には絞り込みが10%以下になるようなインデックスを貼るのが良いと言われています。
複合インデックスでインデックスを貼る場合も、できる限りカーディナリティの高いものから貼ると効率の良いインデックスが晴れるでしょう。