MySQL索引创建

时间:2011-08-23 04:06:29

标签: mysql database rdbms indexing database-optimization

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

比如说:

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

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

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

谢谢!

2 个答案:

答案 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