Mysql 索引的学习
索引(Index)是帮助快速检索出数据的数据结构
作用:快速检索
本质:数据结构
数据结构:数组、链表、图、树、队列...
本质:存储数据(推荐学习网址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)
hash 散链表:取模13 一次查找。缺点:不支持范围查找
二叉树:支持范围查找。缺点:不平衡
红黑树:和二叉树比较,相对平衡(还是不平衡)。
B+Tree:
Mysql索引是如何存储的
引擎是表级别的
MyISAM引擎(非聚集索引)
.frm :创建表的文件
.MYD:数据存储文件
.MYI:索引文件
select * from user where id = 7
select * from user where username = 'c'
重复度很高的字段不适应建立索引(缓存page 大小约为16k 可能缓存不了太多的数据)
Innodb引擎
.frm :创建表的文件
.IDB:索引+数据文件
非ID的索引 也是ID为主键的索引结构
偷懒下,降低存储空间 ,减少了索引的创建