2012-03-27 62 views
0

我有一个包含6000万行的表。该结构像entryid, date, sourceid, detail, views(entryid, date, sourceid, detail)是PK,除views之外,我也有各个字段的索引。MySQL MyISAM表索引基数为零

问题是四个指标的基数都是零,但我相信他们不应该。

我想知道为什么?这是否意味着索引不起作用?

+0

为空或为零? – ajreal 2012-03-27 17:45:26

+0

您是否尝试过运行'ANALYZE TABLE',然后再次检查? – 2012-03-27 17:50:08

回答

0

表格统计信息可能未被更新。

this page on optimizing MyISAM tables

为了帮助MySQL的更好的优化查询,使用ANALYZE TABLE或已加载数据后在表上运行myisamchk的 --analyze。 这会更新每个索引部分的值,该值指示具有相同值的平均行数 。 (对于唯一索引,这是始终为1的 。)当你使用 基于非常数表达式连接两个表时,MySQL使用它来决定选择哪个索引。您可以使用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)