2012-03-27 10 views
0

私は6000万行を含むテーブルを持っています。構造はentryid, date, sourceid, detail, viewsのようなものです。 (entryid, date, sourceid, detail)はPKで、views以外の各フィールドのインデックスもあります。MySQL MyISAMテーブルインデックスカーディナリティーはゼロです

問題は、4つのインデックスのカーディナリティがゼロであることですが、私はそれらを使用すべきではないと確信しています。

なぜですか?インデックスが機能しないということですか?

+0

がnullまたはゼロ? – ajreal

+0

'ANALYZE TABLE'を実行してみましたか? –

答えて

0

テーブルの統計情報が更新されていない可能性があります。 、MySQLはより良いクエリの最適化を支援するために

TABLEを分析したり、データがロードされた後、テーブルの上に のmyisamchk --analyzeを実行して使用します。

this page on optimizing MyISAM tablesを参照してください。 これは、同じ値を持つ行の数が平均で であることを示すインデックス部分の値を更新します。 (ユニークなインデックスの場合、これは 常に1です。)MySQLはこれを使用して、 が非定数式に基づいて2つのテーブルを結合するときに選択するインデックスを決定します。 SHOW INDEX FROM tbl_nameおよび カーディナリティ値を調べることによって、表分析から 結果を確認できます。 myisamchk --description --verbose は、インデックスの配布情報を表示します。


インデックスがis to explain a queryを支援しているかどうかを判断するための最良の方法:

mysql> explain select 1; 
+----+-------------+-------+------+---------------+------+---------+------+------+----------------+ 
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra   | 
+----+-------------+-------+------+---------------+------+---------+------+------+----------------+ 
| 1 | SIMPLE  | NULL | NULL | NULL   | NULL | NULL | NULL | NULL | No tables used | 
+----+-------------+-------+------+---------------+------+---------+------+------+----------------+ 
1 row in set (0.00 sec) 
関連する問題