Mysql 对于具有不同基数的列的复合索引,顺序是否重要?

Mysql 对于具有不同基数的列的复合索引,顺序是否重要?,mysql,database,database-design,Mysql,Database,Database Design,对于使用复合b树索引的所有列的查询 从性别='M'和出生日期

对于使用复合b树索引的所有列的查询

从性别='M'和出生日期<'2000-01-01'的客户中选择*

两者之间有区别吗

在客户(性别、出生日期)上先低后高创建指数;
在客户(出生日期、性别)上创建高然后低的索引;

有人提出了类似的问题,但公认的答案没有解释建议背后的原因


我问的是MySQL,但我猜答案适用于任何b树索引。

否。多列
索引中的基数不重要。但是,列的用法确实很重要


索引中的第一列需要使用
=
进行测试。之后,在一个“范围”上得到一条裂纹,例如
否。多列
索引中的基数无关紧要。但是,列的用法确实很重要


索引中的第一列需要使用
=
进行测试。在此之后,在“范围”中得到一条裂纹,例如
在每个索引中,最好将基数较高的列放在左侧。在每个索引中,最好将基数较高的列放在左侧。更具选择性
(gender, date_of_birth) -- will use both columns.
(date_of_birth, gender) -- will ignore `gender` and not be as efficient.