【问题标题】:Do multi-column indexes in MariaDB also have this property present in MySQL?MariaDB 中的多列索引在 MySQL 中是否也存在此属性?
【发布时间】:2019-04-05 19:58:51
【问题描述】:

根据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 分叉出来的,但我不确定这个相对深奥的细节在两个引擎中是否相同。

【问题讨论】:

  • 有趣的问题。我希望它会给出 B 树的工作原理,但我真的不具体了解 MariaDB。我很想亲自听到答案!

标签: sql indexing mariadb


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    如果不是这样,索引的效果会大大降低。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      相关资源
      最近更新 更多