mysql的索引
1.先别扯这么多,先把数据结构搞清楚。
何为索引:方便快速查找我们表的行记录的间接标识。有了它,减少我们扫描表的范围,快速定位
不用索引,我们找数据的时候,就需要和磁盘进行交互,一行一行检索比对数据,磁盘io就是很大瓶颈
mysql的索引数据结构分类
大致分类:btree索引, hash索引, 空间索引,全文索引
1. Btree:
简单介绍结构:一个矮胖的二叉搜索树
分为B+tree和B-tree 没什么不同,只是+的是-的升级版。数据结构一样,只是存储的内容有些区别。
B-tree:
do: 子节点存储的是这个索引和数据,存的是完整的数据
bad:会造成节点大,树的高度增加,查询复杂,存储容量变少,磁盘io增加
good:索引查询时,找到索引,直接可以从子节点获取记录。
B+tree:
good: 由于页的大小有限,16k,为了优化上述,增加索引的容量,减少磁盘io。少量的查询,就能找到索引。
所有的叶子节点按顺序链接成了链表,因此可以方便的话进行范围查询