4

我有一个包含 10 列的表,我需要支持其中大多数的组合范围过滤器。

比如说:

WHERE column_a >= a_min AND column_a <= a_max 
AND column_b >= b_min AND column_b <= b_max
...

但这还不是全部,我还需要支持按不同列对数据进行排序。

我的问题是,考虑到为优化搜索而创建的可能索引组合很大,我可能的选择是什么?

谢谢!

4

2 回答 2

4

分别为每个列创建索引。让 mysql 弄清楚如何使用它们。


另外,顺便说一句,养成使用between运算符的习惯:

column_a between a_min AND a_max

而不是:

column_a >= a_min AND column_a <= a_max -- ugly and the semantic is not as obvious

它更容易阅读和输入,并且做的事情完全相同。

于 2011-08-23T04:16:50.137 回答
0

为查询中使用的所有列创建索引。

(column_a,column_n)

请参阅此处的多部分索引的范围访问方法:http: //dev.mysql.com/doc/refman/5.0/en/range-optimization.html

于 2011-08-23T04:51:41.843 回答