Mysql索引数据结构与性能

如何建索引

首先是基本存储结构二叉树

 

 但是可能出现极端情况

 

 

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

 

 但是不适合数据量大的时候,所以进行横向拓展

即引入B-Tree

 

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

所以引入B+树

此图中无data数据,所以两种树每个非叶子节点的存储量相同,当每层数据量固定时,并且加入data数据,B+树层级要远远小于B树

 Mysql底层一层给16K空间;一个引用加一个指针

一次IO读层数据到内存,找到下一层所在地址,循环

也可以使用Hash存储数据,但是在存在范围查找的情况下,效率较低

如何使用它

  MyISAM引擎,data对应数据存储地址,数据在另一个文件中,非聚集索引

  InnoDB引擎,data对应数据旁边的完整数据记录,聚集索引

    整型自增主键?整型省空间UUID字符串,自增不会使树分裂,性能高

 

 

联合索引

多串建索引,从前到后排序

posted @ 2020-08-15 12:55  Muusa  阅读(55)  评论(0)    收藏  举报