MySQL/MariaDB数据库的索引工作原理和优化
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
实际工作中索引这个技术是影响服务器性能一个非常重要的指标,因此我们得花时间去了解一下索引的相关特性。
一.索引概述
1>.什么是索引
索引是特殊数据结构,定义在查找时作为查找条件的字段,在MySQL又称为键key,索引通过存储引擎实现。
不是说有了索引性能就一定能提示,有了索引咱们还得会利用索引,用正确的方法使用索引,使用不当反而会降低服务器性能。
2>.索引的优点
索引可以降低服务需要扫描的数据量,减少了IO次数
索引可以帮助服务器避免排序和使用临时表
索引可以帮助将随机I/O转为顺序I/O
3>.索引的缺点
占用额外空间,影响插入速度
二.索引类型
B+ TREE、HASH、R TREE 聚簇(集)索引、非聚簇索引:
数据和索引是否存储在一起 主键索引、二级(辅助)索引 稠密索引、稀疏索引:
是否索引了每一个数据项 简单索引、组合索引: 左前缀索引:取前面的字符做索引 覆盖索引:从索引中即可取出要查询的数据,性能高
1>.二叉树
(1)每个结点最多2棵子树 二叉树不存在度数大于2的结点。 (2)它是有序树,左子树,右子树是顺序的,不能交换次序 (3)即使某个节点只有一棵子树,也要确定它是左子树还是右子树 (4)二叉树的物种基本形态 1)空二叉树 2)只有一个根结点 3)根结点只有左子树 4)根结点只有右子树 5)根结点有左子树和右子树 博主推荐阅读: https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%A0%91 https://www.cnblogs.com/yinzhengjie/p/10960896.html
2>.红黑树(又叫自平衡二叉树)
博主推荐阅读: https://baike.baidu.com/item/%E7%BA%A2%E9%BB%91%E6%A0%91
3>.B-tree索引(B-tree(多路搜索树,并不是二叉的)
B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称。这个数据结构一般用于数据库的索引,综合效率较高。 博主推荐阅读: https://baike.baidu.com/item/B-tree/6606402?fr=aladdin
4>.B+树
B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。 博主推荐阅读: https://baike.baidu.com/item/B+%E6%A0%91/7845683
5>.Hash索引
6>.
7>.
8>.
三.
四.
五.