Mysql: 多列索引,多列索引的顺序重要吗?
Mysql: multiple column indexes, does the order of the multiple column index matter?
我正在尝试了解多列索引。
问题是:
多列索引的顺序重要吗?
我有一个包含 A、B、C 和 D 列的 table。
我执行查询:
SELECT A FROM table WHERE D='2' AND B='1' AND C='0' ;
如果我只创建一个多列索引,速度会有所不同吗:
- B、C、D
- D、B、C
或者多列索引的顺序无关紧要?
附加问题:
如果我执行以下查询,它是否仍然受益于多列索引?
SELECT A, B FROM tablename WHERE D='2' AND C='0';
为什么(不)?
多列索引的顺序无关紧要。换句话说,以下两个查询是相同的:
SELECT A FROM table WHERE D='2' AND B='1' AND C='0';
SELECT A FROM table WHERE B='1' AND D='2' AND C='0';
您上次查询对 D
使用索引 [D, B, C] 而不是 C
,因为 B
未在 WHERE
中使用:
SELECT A, B FROM tablename WHERE D='2' AND C='0';
这是因为未使用索引的第一部分(B 列)。您可以在 MySQL manual:
中找到更多详细信息
MySQL can use multiple-column indexes for queries that test all the columns in the index, or queries that test just the first column, the first two columns, the first three columns, and so on.
我正在尝试了解多列索引。
问题是: 多列索引的顺序重要吗?
我有一个包含 A、B、C 和 D 列的 table。
我执行查询:
SELECT A FROM table WHERE D='2' AND B='1' AND C='0' ;
如果我只创建一个多列索引,速度会有所不同吗:
- B、C、D
- D、B、C
或者多列索引的顺序无关紧要?
附加问题:
如果我执行以下查询,它是否仍然受益于多列索引?
SELECT A, B FROM tablename WHERE D='2' AND C='0';
为什么(不)?
多列索引的顺序无关紧要。换句话说,以下两个查询是相同的:
SELECT A FROM table WHERE D='2' AND B='1' AND C='0';
SELECT A FROM table WHERE B='1' AND D='2' AND C='0';
您上次查询对 D
使用索引 [D, B, C] 而不是 C
,因为 B
未在 WHERE
中使用:
SELECT A, B FROM tablename WHERE D='2' AND C='0';
这是因为未使用索引的第一部分(B 列)。您可以在 MySQL manual:
中找到更多详细信息MySQL can use multiple-column indexes for queries that test all the columns in the index, or queries that test just the first column, the first two columns, the first three columns, and so on.