0

特にmysqlで、データベースのインデックス作成がどのように機能するかについて一般的な質問があります。30個の値に比較的均等に分散された列「ClientID」を持つ100万行のテーブルがあるとします。したがって、この列は主キー(100万)に比べてカーディナリティ(30)が非常に低くなっています。

カーディナリティの低いフィールドにインデックスを作成するべきではないことを理解しました。ただし、この場合、クエリは30のclientIDの1つでのみ実行されます。したがって、検索スペースが通常の1/30に自動的に縮小されるため、ClientIDにインデックスを作成することは役に立ちませんか?それとも、インデックスがどのように機能するかについての私の理解に欠陥がありますか?

ありがとう

4

1 に答える 1

3

私が参加したMySQL主催のセミナーから非常に一般的な経験則として学んだことは、カーディナリティによって検索スペースが80%以上減少するほとんどの場合、ある程度のパフォーマンス上の利点が得られるということです。これは、私が遭遇したほぼすべてのハードウェア設定に当てはまるようです。

これは、ほぼ確実に恩恵を受けるインデックスのように見えます。もちろん、これは、インデックスを絶えず調整する必要がある大量の書き込みテーブルですぐに機能しなくなる可能性があります。

他の状況では、適切な答えは実際には「状況によって異なります」であり、ベンチマークは通常、進むべき道です。

mysqlのBENCHMARK()関数を確認することもできます。これは完璧ではありませんが、次のようなテストに役立ちます。http: //dev.mysql.com/doc/refman/5.1/en/information-functions.html# function_benchmark

于 2010-03-16T06:14:04.127 に答える