这里写目录标题
1. 什么是索引
(空间换时间)
索引是帮助mysql高效获取数据的数据结构
在mysql中,数据最终存储在硬盘中,(如果i/o操作不够多,查询就很慢)
2. 索引引用哪种数据结构:
(InnoDB不能手动创建hash,系统判断hash是否能起到加速效果,自适应创建。PS:可以关闭自适应)
Hash
B±tree
3. 为什么InnoDB使用B+_tree
二叉搜索树:可能存在顺序结构(链表树),存在遍历查找的结果,空间时间都浪费了
平衡二叉搜索树(AVL):实质是平衡二叉树,每个父节点只能有两个子节点,这就导致数据很多的时候树的深度太深,也就是查询的时候I/O操作多,倒是查询速度变慢,同时mysql每次从磁盘读取数据到内存默认是16KB,而对于搜索来说有用的数据只有一点点,导致读写资源浪费,即是节点只有一个关键字,每次I/O操作获取目标数据太少
B_tree:多路搜索树,绝对平衡,节点在同一水平线,每个节点关键字有N个,将数据分成若干开区间,节点内容包括(子节点索引和数据)
B+_tree:优点:1.、基于索引的扫表操作;2、叶子节点天然有序,基于索引排序更加优秀;3、每次I/O操作读取的索引更多&