#1 楼
是的,MySQL可以在某些条件下在ORDER BY的列上使用索引。但是,MySQL不能对(SELECT * FROM foo ORDER BY bar ASC, pants DESC
)的混合ASC,DESC顺序使用索引。共享您的查询和CREATE TABLE语句将帮助我们更具体地回答您的问题。有关如何优化ORDER BY子句的提示:
http://dev.mysql.com/doc/ refman / 5.1 / zh-CN / order-by-optimization.html
编辑2012-01-21 8:53 AM
关于我使用“在ORDER BY中混合ASC / DESC
索引。在ORDER BY Optimization文档中:
在某些情况下,MySQL不能使用索引来解析ORDER BY,
尽管它仍然使用索引来查找与WHERE匹配的行。
子句。这些情况包括:
...
混合使用ASC和DESC:
SELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 ASC ;
...
另外,DESC关键字在CREATE INDEX中是没有意义的
以ASC或DESC结尾。这些
关键字可用于将来的扩展,用于指定升序
或降序索引值存储。目前,它们已被解析,但
被忽略;索引值始终按升序存储。
评论
“ MySQL无法将索引用于混合的ASC,DESC”。为此参考?
–超立方体ᵀᴹ
2012年1月21日,9:26
CREATE INDEX idx_foo ON foo(栏ASC,裤子DESC);应该管用。
–弗兰克·海肯斯(Frank Heikens)
2012年1月21日10:38
我的资料是我的答案中链接的mysql文档。搜索“混音”。
–亚伦·布朗
2012年1月21日12:43
MySQL在CREATE INDEX中解析asc和Desc,但忽略它们。索引始终按升序存储。 dev.mysql.com/doc/refman/5.5/en/create-index.html
–亚伦·布朗
2012年1月21日,12:54
MySQL 8.0的新增功能:现在,如果INDEX具有相同的混合,则可以混合使用ASC和DESC。
–里克·詹姆斯(Rick James)
19-09-18在6:19
评论
请发布查询