我有一个包含10列的表格,我需要为大多数列支持组合范围过滤器。
比如说:
WHERE column_a >= a_min AND column_a <= a_max
AND column_b >= b_min AND column_b <= b_max
...
但这还不是全部,我还需要支持按不同列排序数据。
我的问题是,考虑到为优化搜索而创建的可能索引组合是巨大的,这是我可能的选择吗?
谢谢!
答案 0 :(得分: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
它更容易阅读和输入,完全同样的事情。
答案 1 :(得分:0)
为查询中使用的所有列创建索引。
(column_a,column_n)
请参阅此处的多部分索引的范围访问方法:http://dev.mysql.com/doc/refman/5.0/en/range-optimization.html