hjr-SQL-关于创建索引

本文探讨了MySQL中数据查询慢的问题,指出在where、group by或聚合函数涉及的字段上创建索引能显著提升查询速度。介绍了索引类型,包括unique和normal,并解释了联合索引的概念和作用。联合索引能够提高查询效率,如同房间和床合编一个编号。此外,还提到了索引的生效规则和不同引擎的索引原理,如B+树和Hash。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么时候创建索引

mysql 报表查询几百万数据很慢

把where 字段 group by 字段 或者max,count,sum 的字段可以创建索引提升速度

索引类型

一般索引常用有两种类型 先选择 unique 如果因为存在重复数据报错了 就换成normal

联合索引

举个例子
select max(a),b from xxx group by b;

此时只给b建索引还是很慢,因为虽然查询b快了,但是还要花时间遍历a然后排序,总体时间可能更慢了

如果同时给a和b建立索引,还是很慢,因为a和b没有一起组成索引,相当于各查各的,索引还可能会失效

因此可以给a和b建立联合索引,这样就快了

比如有很多房间很多床,单独索引就是给每个房间或每个床编号,然后根据编号快速查询到房间或床,联合索引相当于给房间和里面的某个床合到一起编一个编号

生效规则:从左往右依次生效,如果某个没用到,断点前生效,断点后不生效

索引原理

不同引擎不一样
innerdb是 b+ 树
还有hash 和 b树

在一段内存里,描述为一段目录和指针

不同索引遍历方式不同

分类:
按照逻辑:主键、 唯一索引、普通、全文
物理:聚簇 和 非聚簇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师小侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值