首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化排序查询

优化排序查询
EN

Stack Overflow用户
提问于 2012-01-20 03:35:59
回答 5查看 119关注 0票数 2

我找不到优化以下查询的方法:

代码语言:javascript
复制
SELECT * 
FROM tbl 
WHERE type='51' AND `start`<='2012-01-19' 
ORDER BY end DESC 
LIMIT 5

我尝试过在单独的索引(类型、开始和结束)中为每一列编制索引,并且所有这些列都在相同的索引中,但是MySQL一直告诉我需要执行文件排序

这个查询是不是不可能被优化?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-20 03:44:31

可以,只要您在WHERE中有范围比较并按另一个字段排序- mysql就不能使用索引进行排序。

如果您有WHERE type='51' ANDstart='2012-01-19' ORDER BY end DESCWHERE type='51' ANDstart<= '2012-01-19' ORDER BY start DESC,则可以

http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html --这里有一个与您的问题相关的章节

票数 1
EN

Stack Overflow用户

发布于 2012-01-20 03:43:04

这在很大程度上取决于列类型和表中的所有内容,但您真正需要的只是typestartend列的索引。

为了获得额外的提升,您可以在typestart之间创建索引。

票数 0
EN

Stack Overflow用户

发布于 2012-01-20 03:48:09

我的第一个想法是(*)扩展到没有索引的行。

如果不是,你肯定会从Multiple-Column Index中受益。

我将尝试并学习如何在索引定义中创建具有最低基数(大约唯一的组合)的列的顺序。

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

https://stackoverflow.com/questions/8932173

复制
相关文章

相似问题

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