我依靠2个字段来搜索表:field1,field2。它们并非在所有记录中都是唯一的,既不是单独的也不是组合的。
所以我正在为它们添加索引:
方法一:
alter table xx add index (field1, field2);
alter table xx add index (field2);
方法二:
alter table xx add index (field1);
alter table xx add index (field2);
我的问题是这两种方法之间有什么区别?对于以下每个选择查询:
select * from table xx where field1 = ??
select * from table xx where field2 = ??
select * from table xx where field1 = ?? and field2 = ??
select * from table xx where field1 = ?? or field2 = ??
哪种方法更好?
而且,对于此查询,哪种方法更好?
select * from table xx where field1 = ?? and field2 = ??
答案 0 :(得分:0)
对于您发布的查询方法1会更好,因为复合索引(field1, field2)
将用于field1 = ?? and field2 = ??
从field1 = ?? or field2 = ??
查询开始 - index merge将尝试应用,并且无论选择哪种方法进行此类查询都无关紧要。
总结一下:如果你有field1 = ?? and field2 = ??
- 那么你必须选择复合索引。