什么是联合索引

通过将多个字段组合成一个索引,该索引就被称为联合索引。

比如,将商品表中的 product_no 和 name 字段组合成联合索引(product_no, name),创建联合索引的方式如下:

CREATE INDEX index_product_no_name ON product(product_no, name);

联合索引(product_no, name) 的 B+Tree 示意图如下(图中叶子节点之间我画了单向链表,但是实际上是双向链表,原图我找不到了,修改不了,偷个懒我不重画了,大家脑补成双向链表就行)。

图片[1]-什么是联合索引-不念博客

可以看到,联合索引的非叶子节点用两个字段的值作为 B+Tree 的 key 值。

当在联合索引查询数据时,先按 product_no 字段比较,在product_no相同的情况下再按 name 字段比较。

也就是说,联合索引查询的 B+Tree 是先按 product_no 进行排序,然后再product_no相同的情况再按name字段排序。

因此,使用联合索引时,存在最左匹配原则,也就是按照最左优先的方式进行索引的匹配。

在使用联合索引进行查询的时候,如果不遵循「最左匹配原则」,联合索引会失效,这样就无法利用到索引快速查询的特性了。

上一篇 openGauss学习笔记159 openGauss 数据库运维备份与恢复导出数据使用gs_dump和gs_dumpall命令导出数据导出所有数据库导出所有数据库
下一篇 总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(水平扩展控制)
泡泡

泡泡

做最好的知识分享 CSDN云计算领域优质创作者,2022新星计划算法赛道实力新星 算法/云计算/云原生

本月创作热力图