我有一个包含10列的表,并且我需要支持大多数列的组合范围过滤器。
让我们举个例子:
WHERE column_a >= a_min AND column_a <= a_max
AND column_b >= b_min AND column_b <= b_max
...但这还不是全部,我还需要支持按不同列对数据进行排序。
我的问题是,考虑到为了优化搜索而创建的可能的索引组合是巨大的,我有哪些可能的选择?
谢谢!
发布于 2011-08-23 12:16:50
分别为每一列创建索引。让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-23 12:51:42
为查询中使用的所有列创建索引。
(column_a,column_n)
请参阅此处的多部分索引的范围访问方法:http://dev.mysql.com/doc/refman/5.0/en/range-optimization.html
https://stackoverflow.com/questions/7156150
复制相似问题