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