CREATE TABLE msg (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
msg_id bigint(20) NOT NULL,
status tinyint(4),
content text NOT NULL,
create_time datetime NOT NULL,
PRIMARY KEY (id),
KEY idx_msg_id (msg_id)
) ENGINE=InnoDB AUTO_INCREMENT=3048 DEFAULT CHARSET=utf8mb4
显示走了 idx_msg_id 索引,extra 是 Using where; Using index 。 去掉 order by id 后 ,extra 是 Using index 。
PS:默认索引扩展 use_index_extensions=on
Q:既然 idx_msg_id 索引上有 id,且 select 只查询 id,order by id 为何会导致出现 Using where;
附上 mysql 官方文档:https://dev.mysql.com/doc/refman/5.7/en/index-extensions.html 看完也没弄明白。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.