1、索引的结构
mysql索引的数据结构,对经典的B+Tree进行了优化,在原B+Tree上增加了一个指向相邻叶子结点的链表指针,就形成了一个带有顺序指针的B+Tree,提高了区间访问的性能。
选择B+Tree的优点:
a、相对于二叉树,层级更少,搜索效率更高
b、相对于B-Tree,B+Tree只在叶子节点上存储数据,而B-Tree在非叶子节点上也存了数据,这样存储的键减少,层级更高。
c、hash索引不支持排序和范围操作。
2、索引的分类
聚集索引:又叫主键索引,叶子节点保存这一行的数据
非聚集索引:又叫常规索引、二级索引,叶子节点保存这一行的主键
3、性能分析工具---explain
a、使用方式:在select语句前加上explain
b、执行计划各字段的含义:
id: 表的执行顺序,值相同执行顺序从上到下,值越大越先执行。
select_type:表示select的类型,simple表示单表查询;primary表示主查询也就是最外层的查询;union表示join的表;SUBQUERY子查询
type: 连接类型,性能由好到差的连接类型:NULL、system、const、eq_ref、ref、range、index、all
NULL不访问任何表
system访问系统表
const使用主键索引
eq_ref唯一索引
ref非唯一索引
range
index虽然用了索引,但全遍历所有的索引
all全表扫描
possible_keys:可能用到的索引
key:实际用到的索引
key_len:索引字段的长度
rows:扫描的行数,只是一个估值,并不太准确
filtered:返回的行数占总行数的百分比,值越大越好
extra:额外的信息
4、使用规则
5、设计原则
标签:叶子,04,Tree,节点,---,索引,mysql,ref,主键 From: https://www.cnblogs.com/zhengwei-cq/p/18155766