MariaDB中的多列索引是否在MySQL中也具有此属性?

时间:2019-04-05 19:58:51

标签: sql indexing mariadb

根据MySQL documentation,如果我有多列索引,则该索引也将自动用作该索引中任何左前缀列的索引。文档中的示例说,

  

假设表具有以下规范:

CREATE TABLE test (
    id         INT NOT NULL,
    last_name  CHAR(30) NOT NULL,
    first_name CHAR(30) NOT NULL,
    PRIMARY KEY (id),
    INDEX name (last_name,first_name)
);
     

name索引是last_namefirst_name列的索引。该索引可用于查询中的查询,这些查询指定last_namefirst_name值组合的已知范围内的值。它也可以用于仅指定last_name值的查询,因为该列是索引的最左前缀(如本节稍后所述)。

此问题和答案也解释了同一件事:https://stackoverflow.com/a/48827874/473792

MariaDB中的多列索引是否也具有此属性?我知道MariaDB是从MySQL派生的,但是我不确定这个相对深奥的细节在两个引擎上是否相同。

2 个答案:

答案 0 :(得分:1)

是的。所有使用B树索引的数据库都是如此。

如果索引不正确,索引的效率将大大降低。

答案 1 :(得分:1)

MariaDB documentation指的是MySQL 5.7 InnoDB版本编号,因此5.7中的所有功能都应在MariaDB 10.2或更高版本中。

此外,this tutorial提出了一个类似的问题,这使我相信这是InnoDB行为的固有部分。