MySQL的联合索引

说到数据库肯定绕不开索引。

什么场景应该使用联合索引?

见过超级多的候选人不清楚这个点,甚至有些面试官对此也是理解错误。
联合索引原文Multiple-Column Indexes,有些翻译叫做复合索引或者多列索引,这里后面统称联合索引。
一般来说,其有两个优点:
节省空间;
部分场景下效率高。

综合这两个优点,很容易可以推测出常见的使用场景:假设表中有字段证件号cert_no、姓名cert_name,通过证件号查询姓名是高频请求,那么此时就建议创建联合索引(cert_no, cert_name)。
下面从索引的数据结构层面解释下为什么有这两个优点。

节省空间

首先我们知道索引的数据结构是B+树,并且每个索引对应了一棵树。
引用上面的例子,创建联合索引(cert_no, cert_name)只会生成一棵索引树,所以说其节省空间。

效率高

依然是上面的例子,很明显看出在这样的场景下能减少回表次数,也就是减少了树的搜索次数,所以说其效率高。

要想使用好联合索引,还得多关注索引覆盖、最左前缀原则以及 MySQL 5.6 引入的索引下推特性。

本文链接:

https://pugqq.com/archives/Multiple-Column-Indexes.html
MySQL的联合索引 - I/O
快来做第一个评论的人吧~

# 最近更新

JDK国内镜像加速下载2023-05-02

博客评论系统增加悄悄话/匿名留言模式2023-04-10

博客评论系统引入极验api2023-03-22

博客评论系统表情栏优化2023-02-04

centos用firewalld开放端口2022-08-12

数据结构与算法之红黑树2022-03-12

数据结构与算法之字典树2022-03-02

数据结构与算法之LSM树2022-02-24

数据结构与算法之B+树2022-02-15

数据结构与算法之堆2022-02-12