2017-04-12 14 views
0

私はデータベースに、以下のイメージに示すように2つのインデックスを持つトランザクションという名前のテーブルを持っています。非ユニーク索引(account_id)は、異なる基数を示すことがあります。たとえば、一意でないインデックスには一意の値しか持たないPRIMARYと比べて多くの重複があるため、2つのインデックスは同じカーディナリティを示すことがあります。これまでは、一時的に問題を解決するために、非一意索引を削除してから再作成する必要がありました。何が問題なのでしょうか?ユニークでないインデックスカーディナリティ

enter image description here

答えて

1

問題はありません。 reference manualを引用:

カーディナリティ

インデックス内のユニークな値の数の推定値が。これは、ANALYZE TABLEまたはmyisamchk -aを実行することによって更新されます。カーディナリティは、整数として格納された統計に基づいてカウントされるため、小さなテーブルでも値は必ずしも正確ではありません。カーディナリティが高いほど、MySQLが結合を実行する際にインデックスを使用する可能性が高くなります。

カーディナリティの値は単なる見積もりであるため、100%正確であるとは限りません。

+0

この情報に感謝します。しかし、時には、非ユニークな列を持つ列は、その値を数値で増やす傾向があります。テーブル内の特定の行のみ13にします。なぜこれが起こっているのかについての解決策を考え出していますか? – lil

関連する問題