1. 数据结构
1.1 二叉树
找到第一个数,比它大的往右延伸,比它小的往左延伸
缺点: 如果第一个数很小,接下来的数都会往右延伸,会演变成链表结构,下图,如果查6会经过6次查找,效率低
1.2 红黑树
本质还是二叉树,但是会做一个平衡,所以又叫二叉平衡树,比如依次插入1-7, 会变成如下
它不会允许树的一边比另一边高出太多,如果高出太多,它会自动旋转平衡,同理,如果要查找6只要遍历3次就能查找到,效率比二叉树高
缺点:数据量很多时。。树的高度会很高,查询效率变低
1.3 B Tree
1.4 B+Tree
总结:
B Tree和B+Tree的区别:
见上图:
1. B+Tree非叶子节点不存储data,只存储索引
2. B+Tree叶子节点用指针连接,见上图叶子节点所有箭头。可以更好的区间查找,不需要从头再遍历一遍
Mysql用的数据结果为B+Tree,实现原理见下图,主键索引
为什么建议建立一个整型的自增主键?
因为如果不建立整型自增主键,会加大mysql开销,mysql会默认自己去数据表中查询没有重复数据的一列去建立主键索引,如果没找到。会默认建立一个隐藏的列,类似于自增列
为什么不建议UUID做主键?
UUID比较占用mysql内存空间。而且实现B+Tree时会去拿值对比,字符串对比和整型对比的效率,明显整型效率更高