为什么加索引?...MySQL的索引是什么:
索引是帮助MySQL高效获取数据的排好序的数据结构
索引的数据结构包括:
二叉树
红黑树
Hash表
B-Tree
索引存储方式
索引存储是按照KV方式进行存储的,key是这个索引元素...然后对比一下红黑树
jdk1.8之后hashmap之前就是数组加链表存储的,假如链表非常长的时候,在hashmap里面查找元素性能也不是很好的快速查找所以在jdk1.8之后,在hashmap的底层链表被优化成红黑树...,查找性能优化很高
红黑树的索引要是将1-7变成如下
红黑树也是二叉树,也叫做自平衡二叉树,二叉平衡树
但是MySQL最后之所以没有选择红黑树,因为红黑树在某些场景下并不能满足需求,因为用红黑树存储索引在某些情况下有如下问题...最快最快也要经过20次查找,也就要经过20次磁盘io查找
MySQL是将这个数据结构存储在磁盘上面的,假如你先存储了10个数据,然后过了几天又存储了10个数据,中间间隔了很多天,因为数据都是要写到磁道上面,这段时间间隔可能写了很多其他数据