sql - MariaDB 中的多列索引在 MySQL 中是否也存在此属性?
问题描述
根据MySQL 文档,如果我有一个多列索引,那么该索引也会自动用作该索引中任何左前缀列的索引。文档中的示例说,
假设一个表具有以下规范:
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 分叉出来的,但我不确定这个相对深奥的细节在两个引擎中是否相同。
解决方案
由于MariaDB 文档引用了 MySQL 5.7 InnoDB 版本编号,因此 5.7 中的所有功能都应该在 MariaDB 10.2 或更高版本中。
此外,本教程提出了一个类似的问题,这让我相信它是 InnoDB 行为方式的固有部分。
推荐阅读
- sql - 具有多个线外约束的 ALTER TABLE 的铁路图不正确?
- amazon-dynamodb - 修改键属性时复制 DynamoDB 表
- perl - 使用 call_sv() 将数组引用传递给 perl 回调,我应该使用 newRV() 还是 newRV_noinc()?
- android - 谷歌日历 CRUD 编程
- paypal - Paypal 订阅,检查用户是否支付了下个月的费用
- java - 通过多线程读取大文件和进程
- vba - 运行时错误“91”:对象变量或未设置块变量目录邮件合并
- spring-boot - 如何将一个 Spring Boot 应用程序的引用添加到另一个 Spring Boot 应用程序
- reactjs - 我可以使用 Hooks 发布库吗?
- esp8266 - 是否可以使用 Millis() 函数来计算总时间?