dede旅游网站模板,无极招工招聘信息,做网站最多的行业,济南网络公司排名MySQL–优化#xff08;SQL语句执行慢#xff0c;如何分析#xff09;
定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 索引
索引#xff08;index#xff09;是帮助 MySQL 高效获取数据的数据结构#xff…MySQL–优化SQL语句执行慢如何分析
定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 索引
索引index是帮助 MySQL 高效获取数据的数据结构有序。在数据之外数据库系统还维护着满足特定査找算法的数据结构B树这些数据结构以某种方式引用指向数据这样就可以在这些数据结构上实现高级查找算法这种数据结构就是索引。
一、 例子理解索引的用处
无索引
当前我们有一张表里面有很多条数据现在我们要去查年龄为 45 的数据在没有索引的情况age会逐条的进行比对当找到了 45 也不会停他会接着往下找直到整张表多遍历一遍
有索引
比如维护了一个索引二叉搜索数MySQL 中的索引不是二叉搜索数说到二叉树是方便理解
首先找当前二叉树的根节点 36 拿45跟36作比对45比36大走右边找到 37拿45跟47作比对45比48小走左边找到 45这个效率就有明显的提升这个就是索引的好处提升查找效率 总结
我们需要维护一个像二叉搜索数有个这样一个数据结构在查找数据的时候可以提升查找效率减少 IO 的操作 二、索引的底层数据结构
在探讨MySQL索引之前我们需要先了解几种常见的数据结构二叉搜索树、红黑树、B树和B树。每种数据结构都有其独特的工作原理和优缺点。
三、数据结构对比
1、二叉搜索树
虽然二叉搜索树在理想情况下具有较高的查询效率但一旦数据不平衡其性能将大幅下降。
2、红黑数
红黑树通过自平衡机制解决了这一问题但由于其每个节点最多只有两个子节点因此在处理大量数据时树的高度会显著增加导致查询效率降低。那假如 MySQL 某张表的数据是 1千万 而红黑树也是一个二叉树一个节点只能有两个分支如果把1千万的数据存储到红黑树中那么这个红黑树就会变得特别的高要去查找的数据依然要去找很多个层级
3、B 树
B树是一种多叉树结构与二叉树相比它能够减少树的高度从而提高查询效率。然而B树在非叶子节点中既存储键也存储数据这在处理大量数据时可能导致磁盘IO操作增多。B树每个节点可以有多个分支即多叉。以一颗最大度数(max-degree)为5(5阶)的b-tree为例那这个B树每个节点最多存储4个key 每个key多有指针图中key20指针所对应的20以内的数据 其中每个key对应的数据 4、B 树
B树是B树的一种优化版本。它在非叶子节点中仅存储键和子节点的指针而将数据全部存储在叶子节点中。这种设计使得B树的查询效率更加稳定且更适合于磁盘等辅助存储器的数据读写操作。此外B树的叶子节点之间通过指针相连便于进行范围查询和扫库操作。 总结
什么是索引 索引(index)是帮助MySQL高效获取数据的数据结构(有序)提高数据检索的效率降低数据库的I0成本(不需要全表扫描通过索引列对数据进行排序降低数据排序的成本降低了CPU的消耗 索引的底层数据结构 MySQL的InnoDB引擎采用的B树的数据结构来存储索B树 阶数更多路径更短磁盘读写代价B树更低非叶子节点只存储指针叶子阶段存储数据B树便于扫库和区间查询叶子节点是一个双向链表