Mysql:如何在表上制作索引

时间:2011-02-26 01:07:49

标签: mysql indexing myisam

我想知道何时我必须将多个索引放在相同的“索引”或不同的索引下?

INDEX `field1` (`field1`)
INDEX `field2` (`field2`)

INDEX `field1` (`field1`,`field2`)

有什么不同之处吗?

感谢

2 个答案:

答案 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字段索引将比具有单独索引更快,因此决定如何构建索引取决于您将需要哪种类型的查询。