【发布时间】:2011-12-07 14:21:37
【问题描述】:
我有以下疑问:
select from `table` where `a`>0 order by `b` desc limit 0, 10
select from `table` where `a`<0 order by `b` desc limit 0, 10
我希望它们尽可能快地运行。现在的问题是最好的解决方案是什么?
- 为 a 创建索引,为 b 创建索引
- 为 a、b 创建多列索引
- 为 b、a 创建多列索引
我的猜测是使用多列索引会得到最好的结果......但是列的正确顺序是什么? MySQL 会先匹配列a,然后匹配b,还是先匹配b,然后匹配a?
谢谢
【问题讨论】:
-
复合索引在这种情况下没有帮助。
-
表中
a>0的行的百分比是多少?a<0的行是多少?
标签: mysql sql optimization indexing