可能会在 ORDER BY 中被引用的列有加 INDEX 的必要么?

2015 年 1 月 28 日
 Livid
6617 次点击
所在节点    MySQL
15 条回复
ziyuan
2015 年 1 月 28 日
oracle的话,可以查看执行计划,一般是有必要,mysql不太清楚了
garfeildma
2015 年 1 月 28 日
看具体的查询语句吧,order by在很多时候会用上索引,具体可以看这个

http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
p2p
2015 年 1 月 28 日
数据量大了 必要性就体现出来了
kslr
2015 年 1 月 28 日
很明显的提高速度
zts1993
2015 年 1 月 28 日
有的,。。。
xoxo
2015 年 1 月 28 日
很必要, 而且建议BTree方式索引
a2z
2015 年 1 月 28 日
必须有……百万级数据量就看出差距了
est
2015 年 1 月 28 日
where key2 order by key1

key1 必须加索引。

http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
JamesRuan
2015 年 1 月 28 日
为什么是可能会?数据库不应该是根据业务设计的吗?
还处在 [可能] 的时候就别想着加INDEX,等确定一定会的时候再加。
blacktulip
2015 年 1 月 29 日
虽然 Knuth 说过那啥,不过我觉得这个属于那 3% 吧,加索引不麻烦又不影响别的啥,就加上呗
nrop19
2015 年 1 月 29 日
如果是 order by 点击量,那还要点击量这个字段也要索引吗?
dazuiba
2015 年 1 月 29 日
mysql一次只用一个index,联合索引可能有用的。
woshicixide
2015 年 1 月 29 日
当然有
skywatcher
2015 年 1 月 29 日
根据你的常用查询来决定,所以没确定就暂时不加吧,万一后来得用复合索引,那就得换。garfeildma 已经给出了可用情况
ShiningRay
2015 年 3 月 4 日
看 where 之后筛选出来的记录数量,如果比较少的话,而且 order 后面的 selective 并不高的话,可以考虑不给 order 的字段加入索引

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/166299

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX