MySQL MyISAM表索引基数为零

时间:2012-03-27 17:38:54

标签: mysql

我有一个包含6000万行的表。结构类似于entryid, date, sourceid, detail, views(entryid, date, sourceid, detail)是PK,除了views之外,我还有每个字段的索引。

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

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

1 个答案:

答案 0 :(得分:0)

表统计信息可能尚未更新。

请参阅this page on optimizing MyISAM tables

  

为了帮助MySQL更好地优化查询,请使用ANALYZE TABLE或运行   myisamchk - 在加载数据后对表进行分析。   这会更新指示平均值的每个索引部分的值   具有相同值的行数。 (对于唯一索引,这是   总是1.)MySQL使用它来决定你选择哪个索引   基于非常量表达式连接两个表。你可以检查一下   通过使用SHOW INDEX FROM tbl_name和表进行分析得到的结果   检查基数值。 myisamchk - 描述--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)