MYSQL索引原理,优化SQL

本文详细探讨了数据库索引的不同类型,如Btree、B+tree和hash索引,以及MySQL引擎InnoDB和MyISAM的特性。分析了索引在磁盘上的存储方式,主键索引和非主键索引的区别,以及索引最左匹配原则。同时,介绍了查询优化器的工作原理和如何利用覆盖索引来提高查询效率。

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

索引类型:B tree(mongodb),B+ bree(Mysql),hash 

mysql引擎:innodb myisame memory

B tree:多路平衡搜索数,degree代表最多分的叉。为了减少树的高度,从而减少 IO次数。一页 默认 16 KB 的话 每一页 包含数据

B+ tree:升级点 左闭右开、非叶子节点 不存储数据 ,一页 16 kb 没有 数据区。都在叶子节点好处是默认排序方便 扫表方便。

索引落地:存储在磁盘

myisame: tablename.myi 索引接口数据,tablename.myd数据。

myi 主键索引,普通索引 都是存的 myd的地址指针。

innodb:区分主键索引和普通索引。只有idb文件,主键索引叶子节点存储的数据,不是地址指针

其他索引 叶子节点存储的是主键的值,然后查询主键索引。

主键索引叫做聚集索引,其他叫做非聚集索引。

_rowid 隐藏索引 int 6 byte。

显示设置 int类型主键索引  是 4byte

索引最左匹配原则: accii 转值用于 平衡树的比较,联合索引(a, b)是根据a, b进行排序(先根据a排序,如果a相同则根据b排序)。name like ‘name%’ 会用到索引 == 最左前缀原则 ,但是特殊情况 有不用的场景。比如 索引都可以走到就会都不走。

执行计划:范围之后全失效  col > ???.

优化器:调换位置 使用 索引

查询缓存:mysql 8.0 去掉。缓存结果。

覆盖索引、回表操作:减少 select * ,要什么 拿什么。通过索引项信息可以直接返回所查询的列,则该索引称为查询sql的覆盖索引。回表操作是指主键的值查询主键索引树的过程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值