目录
索引概述:
官方介绍索引是帮助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语句
索引的设计原则

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

被折叠的 条评论
为什么被折叠?



