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

2015-01-28 20:43:45 +08:00
 Livid
5516 次点击
所在节点    MySQL
15 条回复
ziyuan
2015-01-28 20:51:31 +08:00
oracle的话,可以查看执行计划,一般是有必要,mysql不太清楚了
garfeildma
2015-01-28 20:57:21 +08:00
看具体的查询语句吧,order by在很多时候会用上索引,具体可以看这个

http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
p2p
2015-01-28 20:59:46 +08:00
数据量大了 必要性就体现出来了
kslr
2015-01-28 21:08:07 +08:00
很明显的提高速度
zts1993
2015-01-28 21:28:00 +08:00
有的,。。。
xoxo
2015-01-28 21:34:21 +08:00
很必要, 而且建议BTree方式索引
a2z
2015-01-28 21:50:17 +08:00
必须有……百万级数据量就看出差距了
est
2015-01-28 21:55:33 +08:00
where key2 order by key1

key1 必须加索引。

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

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

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

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

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

© 2021 V2EX