Mysql索引数据结构与性能
如何建索引
首先是基本存储结构二叉树

但是可能出现极端情况

引入红黑树,即自平衡二叉树

但是不适合数据量大的时候,所以进行横向拓展
即引入B-Tree

每个索引下面存在data数据,但如果数据量较大,由于data的存在,层数依旧较多
所以引入B+树

此图中无data数据,所以两种树每个非叶子节点的存储量相同,当每层数据量固定时,并且加入data数据,B+树层级要远远小于B树
Mysql底层一层给16K空间;一个引用加一个指针
一次IO读层数据到内存,找到下一层所在地址,循环
也可以使用Hash存储数据,但是在存在范围查找的情况下,效率较低
如何使用它
MyISAM引擎,data对应数据存储地址,数据在另一个文件中,非聚集索引
InnoDB引擎,data对应数据旁边的完整数据记录,聚集索引
整型自增主键?整型省空间UUID字符串,自增不会使树分裂,性能高
联合索引
多串建索引,从前到后排序

浙公网安备 33010602011771号