文章目录
- 索引概述
- 索引优缺点
- 索引结构
- 二叉树
索引概述
MYSQL官方对索引的解释How MySQL Uses Indexes
MySQL官方对索引的解释为:索引用于快速查找具有特定列值的行。8.3.1 How MySQL Uses IndexesIndexes are used to find rows with specific column values quickly. Without an index,
MySQL must begin with the first row and then read through the entire table to find the relevant rows.
The larger the table, the more this costs. If the table has an index for the columns in question,
MySQL can quickly determine the position to seek to in the middle of the data file without having to look at all the data.
This is much faster than reading every row sequentially.百度翻译MySQL如何使用索引
索引用于快速查找具有特定列值的行。在没有索引的情况下,
MySQL必须从第一行开始,然后通读整个表以找到相关的行。
数据表越大,花费就越多。如果该表具有用于所讨论的列的索引,
MySQL可以快速确定要在数据文件中间查找的位置,而无需查看所有数据。
这比按顺序读取每一行要快得多。
索引(Index)是帮助MySQL高效获取数据的数据结构。索引是经过了排序了的可以快速查找数据的特殊数据结构,它定义在作为查找条件的字段上,它通过存储引擎实现。
索引优缺点
优点:1.索引可以降低检索时需要扫描的数据量,减少了IO次数。(字典通过偏旁部首或拼音可以直接翻到对应字的页数)2.索引可以避免服务器排序和使用零时表。3.索引可以帮助随机IO转为顺序IO.缺点:1.索引占用额外的磁盘空间,每个所以都还占据一定的物理空间。2.索引有创建和维护成本,随着数据量的增加,索引需要投入的成本也就越高。3.索引影响数据的插入和修改速度。(试想,新华大字典的检字表里突然需要增加一个7画的字,那7画的这个字就得插入到6画的和8画的字的中间,此时7画字的详情页码占用了原来8画字的页码,所以8画以后的字,9画,10画,11画...等等大于7画的字的页码都得依次往后挪一挪,这就是一个巨大的索引维护成本。)
索引类型:B+Tree、HASH、R TREE、FULL TEXT
索引结构
Mysql的索引使用B树、B+树等数据结构了解B树和B+树之前需要先了解二叉树、红黑树、平衡树等数据结构.二叉树,红黑树,B-Tree,B+Tree
参考链接:https://www.cs.usfca.edu/~galles/visualization/StackArray.html
由下面的动图可以看出Push入栈和Pop出栈都是根据索引角标[01234]去查找的.
二叉树
二叉树参考链接:https://www.cs.usfca.edu/~galles/visualization/BST.html
二叉树是如何遍历的
由下面的动图可以看出二叉树数据存放时,总是和根节点先做比较,再决定是存放在根节点的左节点还是有节点,就像二分法一样。
当delete二叉树中的数据时,也是会去遍历与之二分出来的数据做比较。