私は主に Actionscript の開発者であり、決して SQL の専門家ではありませんが、単純なサーバー側のものを開発する必要がある場合があります。というわけで、タイトルの質問については、もっと経験豊富な人に聞いてみようと思いました。
私の理解では、いくつかの異なる値を保持する列にインデックスを設定しても、あまり得はありません。ブール値を保持する列があり (実際には小さな int ですが、フラグとして使用しています)、この列はほとんどのクエリの WHERE 句で使用されています。理論上の「平均」のケースでは、レコードの値の半分は 1 になり、残りの半分は 0 になります。したがって、このシナリオでは、データベース エンジンは完全なテーブル スキャンを回避できますが、とにかく多くの行を読み取る必要があります。 (合計行/2)。
では、この列をインデックスにする必要がありますか?
記録のために、私はMysql 5を使用していますが、カーディナリティが低いことがわかっている列にインデックスを付けることが意味をなさない/しない理由についての一般的な理論的根拠にもっと興味があります。
前もって感謝します。