MySQL深入——索引

本文详细介绍了数据库索引的优缺点、结构和分类,重点关注了B+Tree索引在InnoDB存储引擎中的应用。讨论了索引使用的关键点,如最左前缀法则、范围查询、覆盖索引等,并提供了SQL性能分析和索引设计原则。强调了覆盖索引在减少回表查询中的重要性,以及如何通过前缀索引和联合索引提高查询效率。
摘要由CSDN通过智能技术生成

目录

索引概述:

索引的优缺点​

 索引的结构

索引分类

索引的使用

1.最左前缀法则(语句中是否存在,与顺序无关)

2.范围查询(为防止索引失效,尽量使要>=或<=)

3.索引列计算

 4.字符串不加引号(隐式的类型转换使索引失效)

5.模糊查询

6.or连接的条件

 7.数据分布影响

索引使用的技巧

1.SQL提示

 2.覆盖索引(重点) 

3.前缀索引

4.单列索引与联合索引

SQL性能分析

索引的设计原则 


索引概述:

官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。

一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。

我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别说明,默认都是使用B+树结构组织(多路搜索树,并不一定是二叉的)的索引。

索引的优缺点

索引的结构

 MySQL对经典的B+Tree进行了优化,使得数据都存储在叶子结点上

那么为什么InnoDB存储引擎选择使用B+Tree索引结构?

        1.相对也二叉树,层级更少,搜索效率高;

        2.对于B-Tree,无论是叶子结点还是非叶子结点,都保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低;

        3.相对Hash索引,B+Tree支持范围匹配及排序操作;

索引分类

  索引在InnoDB存储引擎中的存储形式

 简单演示过程


索引的使用

1.最左前缀法则(语句中是否存在,与顺序无关)

2.范围查询(为防止索引失效,尽量使要>=或<=)

3.索引列计算

 4.字符串不加引号(隐式的类型转换使索引失效)

5.模糊查询

6.or连接的条件

 7.数据分布影响


索引使用的技巧

1.SQL提示

 2.覆盖索引(重点) 

 示例:

 总结:

        尽量使用 联合索引 来避免 回表查询

3.前缀索引

示例:

4.单列索引与联合索引


SQL性能分析

 

总结:

        关于SQL性能分析,我们主要关注type类型,根据type类型来优化SQL语句


索引的设计原则 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值