我有一个包含6000万行的表。结构类似于entryid, date, sourceid, detail, views
。 (entryid, date, sourceid, detail)
是PK,除了views
之外,我还有每个字段的索引。
问题是四个指数的基数为零,但我相信它们不应该。
我想知道为什么会这样?这是否意味着索引不起作用?
答案 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)