MySQL索引:索引2个字段的区别是什么?

时间:2011-01-09 06:52:05

标签: mysql database indexing

我依靠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 = ??

1 个答案:

答案 0 :(得分:0)

对于您发布的查询方法1会更好,因为复合索引(field1, field2)将用于field1 = ?? and field2 = ??

的查询

field1 = ?? or field2 = ??查询开始 - index merge将尝试应用,并且无论选择哪种方法进行此类查询都无关紧要。

总结一下:如果你有field1 = ?? and field2 = ?? - 那么你必须选择复合索引。