联合索引(各种索引)

本文介绍了MySQL数据库中的聚集索引与非聚集索引概念,重点讨论了聚集索引与主键的关系。此外,详细阐述了联合索引的创建与使用,包括全匹配、最左前缀匹配原则,并指出联合索引在排序上的优势,有助于优化查询性能。
摘要由CSDN通过智能技术生成

聚集索引和非聚集索引

数据库中B+树索引可以分为聚集索引和非聚集索引(辅助索引)

聚集索引

每张表只有一个聚集索引,且是建立在主键上面的。

主键索引

在InnoDB存储引擎中,每张表都有个主键,如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键

首先判断表中是否存在非空的唯一索引,如果有,则该列即为主键
如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针。

联合索引

联合索引在表上的多个列进行索引。

1.联合索引

创建如下的表,并创建一个联合索引(a,b)

CREATE TABLE t(
a INT,
b INT,
PRIMARY KEY (a),
KEY idx_a_b (a,b)
)ENGINE=INNODB

联合索引的B+树如下。通过叶子节点可以逻辑上顺序的读出所有数据,(1,1),(1,2),(2,1),(2,4),(3,1),(3,2)
在这里插入图片描述
2.能够使用联合索引的情况

①全匹配

select * from t where a=xxx and b=xxx

②最左前缀匹配

对于单个的a列,也可以用到(a,b)联合索引

select * from t where a=xxx

③不能使用联合索引

叶子节点上b的值为1,2,1,4,1,2,显然不是排序的。

select * f

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值