我有一个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,它在两种情况下都可以正常工作?
答案 0 :(得分:0)
答案取决于你的查询真实情况。如果前四列(a1
,a2
,a3
,b1
)具有高度选择性,则两者都可以。索引应该用于两个查询。当然,它将针对匹配所有列的查询进行更优化。
但是,没有办法让“one”索引处理两组列。
如果这些列是查询中使用的唯一列,则索引“覆盖”它们各自的查询。这意味着查询的所有信息都在索引中,不需要原始数据页。如果您想要这样的覆盖索引,但只想要一个,那么您可以将所有列添加到其中一个索引中:
a1, a2, a3, b1, b3, b4, b2
下一个考虑因素是表的更新频率。维护两个索引需要两倍的索引时间来维护一个索引。这是查询的问题吗?如果是这样,您可能只想倾向于一个索引。