MYSQL之索引
本章包含索引概述,索引结构,索引语法,索引分类,SQL性能分析,索引使用,索引设计原则!
-
索引概述
- 介绍
(1)索引(index)是帮助MySQL高效获取数据的数据结构(有序)。
(2)在数据之外,数据库系统还维护着满足特定查找算法的数据结构。这些数据结构以某种方式引用(指向)数据。
(3)这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 - 优缺点
优点:
(1)提高数据检索的效率,降低数据库的IO成本。
(2)通过索引列对数据进行排序,降低了数据的排序成本,减低cpu的消耗。
缺点:
(1)索引列也是要占用空间。
(2)索引大大提高了查询效率,同时却降低了更新表的速度,因为在进行insert,update,delete时还需要维护索引。
-
索引的数据结构
MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构。主要分为4种。
我们平常所说的索引,一般指的是B+Tree索引。
二叉树数据结构
二叉树的缺点:
(1)顺序插入时,会形成一个链表,查询速度大大降低。
(2)由于一个节点最多只能由连个子节点,大数据量时,树的层级较深,检索速度慢。
红黑树数据结构
红黑树是自平衡二叉树:
(1)解决了形成链表的情况。
(2)本质上是二叉树,大数据量时,树的层级较深,检索速度慢。
B-Tree数据结构
B-Tree是多路平衡查找树。
动态演示链接:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
B-Tree特点,以5阶树为例
(1)5阶的树,每个节点最多存储4个key,5个指针。
(2)插入数据时,每个节点在key等于5时,发生裂变,中间元素向上抽取。以此类推
B-Tree数据结构
B+Tree是特殊的B-Tree树。
相对于B-Tree的区别
(1)所有的数据都会出现在叶子节点
(2)叶子节点形成一个单向链表。