首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql Order by子句使用"FileSort“

Mysql Order by子句使用"FileSort“
EN

Stack Overflow用户
提问于 2012-08-12 16:51:58
回答 1查看 11.1K关注 0票数 9

我有一个表结构,像这样

代码语言:javascript
复制
comment_id primary key
comment_content 
comment_author
comment_author_url

当我像这样触发查询时

代码语言:javascript
复制
explain SELECT * FROM comments  ORDER BY comment_id

它将结果输出为

代码语言:javascript
复制
id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1   SIMPLE  comments    ALL     NULL    NULL    NULL    NULL    22563   Using filesort

为什么找不到我定义为主键的索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-12 17:12:02

任何时候不能从索引执行排序,它就是文件排序。

这里奇怪的是,你应该在那个字段上建立索引,因为它是一个主键(并且一个主键列是隐式索引的),在测试数据库上测试我刚刚注意到,每当你执行SELECT *时,MySQL都会使用FileSort,这是一个没有意义的行为(我知道),但是如果你用这种方式重写你的查询:

代码语言:javascript
复制
SELECT comment_id, comment_content, comment_author, comment_author_url 
FROM comments  
ORDER BY comment_id

它将正确使用索引。可能是mysql的一个bug ...

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11920953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档