【发布时间】:2012-01-02 23:03:29
【问题描述】:
我有一个包含一个主键的表。 当我跑步时
EXPLAIN SELECT * FROM news ORDER BY id ASC LIMIT 29
Mysql 返回
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE news ALL NULL NULL NULL NULL 640 Using filesort
但是通过 EXPLAIN SELECT * 来自新闻 ORDER BY id ASC 限制 28 它返回
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE news index NULL PRIMARY 4 NULL 28
显示新闻索引;
Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Comment
'news', 0, 'PRIMARY', 1, 'id', 'A', 640, , '', '', 'BTREE', ''
'news', 1, 'tarix', 1, 'tarix', 'A', 106, , '', '', 'BTREE', ''
'news', 1, 'yayindil', 1, 'yayin', 'A', 3, , '', '', 'BTREE', ''
'news', 1, 'yayindil', 2, 'dil', 'A', 7, , '', '', 'BTREE', ''
我在其他表上检查过,它们在限制 4000 上也能正常工作。出了什么问题?为什么只有低于 29 的限制使用索引?
【问题讨论】:
-
该表有多少行?
-
两个表中的索引是否相似?查看
show index from news输出。 -
真的很奇怪,你确定要查询吗?,试试用 `` 转义名字
-
我添加 SHOW INDEX FROM news ;通过编辑我的帖子。更改限制值会影响键的使用。
-
所有大于28的限制计数都无法使用索引?这很奇怪,但至少考虑到行数(640),这并不意味着性能不佳。
标签: mysql query-optimization primary-key