Mysql索引学习笔记

MySQL索引学习笔记

索引的定义

索引是一种可以提高查询速度的技术,为数据库一列和多列数据添加一个可以快速访问数据值的排好序的数据结构,相当于图书的目录,可以通过目录快速找到对应章节的文章。通过索引可以减少磁盘的IO次数,从而提高查询效率。

索引的优缺点

索引的优点:可以提高数据的查询速度
缺点:在新增和更新数据时,维护索引比较耗时

索引的结构

二叉树(红黑树)、Hash、Btree

二叉树

二叉查找/搜索/排序树 BST (binary search/sort tree)
或者是一棵空树;
或者是具有下列性质的二叉树:
(1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;
(2)若它的右子树上所有结点的值均大于它的根节点的值;
(3)它的左、右子树也分别为二叉排序树。
在这里插入图片描述
特点:树的深度比较深,用作索引存储会增加磁盘访问次数,用来存储索引效率很低,不会自动平衡。

红黑树

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种平衡二叉树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
红黑树
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
(6)树的高度随着数据量增大会变大不可控。

B树

B树可以控制树的高度,可以增大树的宽度,可以在横向存储更多的索引数据。
在这里插入图片描述
特点:
遵循二叉树特性,左<根<右,树的高度减低,广度增加可以减少IO次数提高查询效率。

B+ 树

在这里插入图片描述
特点:
非叶子节点不存储数据,只存储Key,可以加大宽度
叶子节点不存储数据,只存储指针
从树的广度遍历是,横向访问指针提高查询速度。

MyISAM存储引擎索引结构

在这里插入图片描述

InnoDB索引存储模式

在这里插入图片描述
聚集索引:
定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。
非聚集索引:
定义:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。
在这里插入图片描述

索引最左前缀原则

在这里插入图片描述在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章