1.索引
高效获取数据的一种数据结构
MySQL 索引支持BTREE和HASH。
区别:
- 如果是等值查询,哈希索引明显有绝对优势,因为只需要经过一次算法即可找到对应的键值,如果键值不是唯一的,就需要先找到该建所在位置,然后再根据链表往后扫描,直到找到相应的数据
- 如果是范围查询检索,这时候哈希索引就毫无用武之地,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;
- 哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询
- 哈希索引也不支持多列联合索引的最左匹配规则
- B+树索引的关键字检索效率比较平均,不像B树那样波动幅度大,在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题
2.二叉树
左中小,右中大。为啥没用二叉树(二叉树有可能退化成先行表)
3.红黑树
和二叉树一样的问题,和二叉树比较会相对于平衡。
4.存储
innodb:
ibd:表的内容和索引
frm:表结构
Myisam
Myd:表数据
Myi:表索引
ibd:表结构
参考链接 https://www.cnblogs.com/hanybblog/p/6485419.html
5.回表查询