如何在两个相似的索引内容上索引mysql表?

时间:2014-02-26 03:37:13

标签: mysql indexing

我有一个mysql数据库表,其中包含以下列:a1,a2,a3,a4,b1,b2,b3 b4。

我需要对记录进行大量搜索,因此我想正确地索引表格。 有时,我需要搜索(a1,a2,a3,b1,b2),有时我需要搜索(a1,a2,a3,b1,b3,b4)。

我应该做两个索引,比如

INDEX  search1  (a1,a2,a3,b1,b2),
INDEX  search2  (a1,a2,a3,b1,b3,b4),

或者,有没有什么好方法让我只做一次INDEX,它在两种情况下都可以正常工作?

1 个答案:

答案 0 :(得分:0)

答案取决于你的查询真实情况。如果前四列(a1a2a3b1)具有高度选择性,则两者都可以。索引应该用于两个查询。当然,它将针对匹配所有列的查询进行更优化。

但是,没有办法让“one”索引处理两组列。

如果这些列是查询中使用的唯一列,则索引“覆盖”它们各自的查询。这意味着查询的所有信息都在索引中,不需要原始数据页。如果您想要这样的覆盖索引,但只想要一个,那么您可以将所有列添加到其中一个索引中:

a1, a2, a3, b1, b3, b4, b2

下一个考虑因素是表的更新频率。维护两个索引需要两倍的索引时间来维护一个索引。这是查询的问题吗?如果是这样,您可能只想倾向于一个索引。