说到数据库肯定绕不开索引。
什么场景应该使用联合索引?
见过超级多的候选人不清楚这个点,甚至有些面试官对此也是理解错误。
联合索引原文Multiple-Column Indexes
,有些翻译叫做复合索引或者多列索引,这里后面统称联合索引。
一般来说,其有两个优点:
- 节省空间;
- 部分场景下效率高。
综合这两个优点,很容易可以推测出常见的使用场景:假设表中有字段证件号cert_no
、姓名cert_name
,通过证件号查询姓名是高频请求,那么此时就建议创建联合索引(cert_no, cert_name)
。
下面从索引的数据结构层面解释下为什么有这两个优点。
节省空间
首先我们知道索引的数据结构是B+树,并且每个索引对应了一棵树。
引用上面的例子,创建联合索引(cert_no, cert_name)
只会生成一棵索引树,所以说其节省空间。
效率高
依然是上面的例子,很明显看出在这样的场景下能减少回表次数,也就是减少了树的搜索次数,所以说其效率高。
⭐:要想使用好联合索引,还得多关注索引覆盖
、最左前缀原则
以及MySQL 5.6引入的索引下推
特性。