我想知道何时我必须将多个索引放在相同的“索引”或不同的索引下?
INDEX `field1` (`field1`)
INDEX `field2` (`field2`)
或
INDEX `field1` (`field1`,`field2`)
有什么不同之处吗?
感谢
答案 0 :(得分:0)
是的,有区别。看:当你要运行像
这样的查询时SELECT * WHERE a = '1' and b = '2'
您将为列a和b创建一个索引:
INDEX `field1` (`field1`,`field2`)
两个索引会慢一些。
抱歉我的英语不好。
答案 1 :(得分:0)
有区别。根据您指定的列的顺序构建由两列(或更多列)构成的索引。只有在搜索前X个字段时才能使用它。假设你有一个索引
exampleIndex (`a`, `b`, `c`)
在运行以下查询时将使用它:
SELECT * FROM tbl WHERE a = 1;
SELECT * FROM tbl WHERE a = 1 AND b = 2;
SELECT * FROM tbl WHERE a = 1 AND b = 2 AND c = 3;
运行以下查询时不会使用它:
SELECT * FROM tbl WHERE b = 2;
SELECT * FROM tbl WHERE c = 3;
SELECT * FROM tbl WHERE b = 2 AND c = 3;
对于第一种类型的查询,具有3字段索引将比具有单独索引更快,因此决定如何构建索引取决于您将需要哪种类型的查询。