【发布时间】: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_name和first_name列的索引。该索引可用于查询中的查找,这些查询为last_name和first_name值的组合指定已知范围内的值。它还可用于仅指定last_name值的查询,因为该列是索引的最左侧前缀(如本节后面所述)。
这个问答也说明了同样的事情:https://stackoverflow.com/a/48827874/473792
MariaDB 中的多列索引也有这个属性吗?我知道 MariaDB 是从 MySQL 分叉出来的,但我不确定这个相对深奥的细节在两个引擎中是否相同。
【问题讨论】:
-
有趣的问题。我希望它会给出 B 树的工作原理,但我真的不具体了解 MariaDB。我很想亲自听到答案!