Mysql:多列索引,多列索引的顺序重要吗?

Mysql:多列索引,多列索引的顺序重要吗?,mysql,multiple-columns,database-indexes,Mysql,Multiple Columns,Database Indexes,我试图理解多个列索引 问题是: 多列索引的顺序重要吗? SELECT A, B FROM tablename WHERE D='2' AND C='0'; 我有一个包含a、B、C和D列的表 我执行一个查询: SELECT A FROM table WHERE D='2' AND B='1' AND C='0' ; 如果我只创建一个多列索引,速度是否有差异: B、 C,D D、 B,C 或者多列索引的顺序不重要吗 额外问题: 如果执行以下查询,它是否仍然受益于多列索引? SELECT A,

我试图理解多个列索引

问题是: 多列索引的顺序重要吗?

SELECT A, B FROM tablename WHERE D='2' AND C='0';
我有一个包含a、B、C和D列的表

我执行一个查询:

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,B,C]表示
D
,但不使用
C
,因为
B
未在
中使用,其中

SELECT A, B FROM tablename WHERE D='2' AND C='0';
这是因为没有使用索引的第一部分(B列)。有关更多详细信息,请参阅:


MySQL可以对测试索引中所有列的查询使用多列索引,或者只测试第一列、前两列、前三列等的查询?那么我有两个多列索引,一个在“C和d”上,另一个在“B,C和d”上,或者这会降低我的查询速度吗?这会使你的上一次查询速度加快,插入速度减慢一点。好的,所以我应该只在大表上使用:-)谢谢!“您上次的查询没有使用索引”-这不太正确
其中D='2'和C='0'
当然可以使用(D,B,C)上的索引。是的,在您的示例中会使用索引。也就是说,在某些情况下,
orderby
使用索引。哇,我的php脚本过去需要+/-29秒来执行,而mysql索引在多个列上,只需要+/-0.34秒!!速度快了+/-85倍!