[MySQL] MySQL索引

1. B+树(索引数据结构) 什么是索引? 为什么索引能加快查询? 索引的数据结构是什么? B+ 树 和(B 树 和 红黑树)有什么区别? 为什么选择 B+树 作为索引数据结构? 为什么Mysql InnoDB选择B+ Tree作为索引? B+ 树 vs B 树 B+ 树只在叶子节点存储数据,B树的非叶子节点也要存储数据,所以B+ 树的单个节点的数据量更小 B+ 树 vs 二叉树 对于有N个叶子节点的B+ 树,搜索复制度为O(logdn) B+ 树 vs Hash 08 索引:排序的艺术 为什么 MySQL 采用 B+ 树作为索引? 2. 索引组织表(索引存储) 堆表和索引组织表有什么区别? 分别应用场景是什么? Mysql InnoDB存储引擎中数据存储方式:索引组织表 数据存储有堆表和索引组织表两种。 堆表中的数据是无序存放的,数据的排序完全依赖索引 索引组织表,数据根据主键进行排序存放在索引中,主键索引也叫聚集索引(Clustered Index) 在索引组织表中,数据即索引,索引即数据 二级索引 InnoDB存储引擎的数据是根据主键索引排序存储的,除了主键索引外,其它的索引都称为二级索引(Secondeary Index),或者非聚集索引 二级索引也是一颗B+树索引,但是它和主键索引不同的是叶子节点存放的是索引键值、主键值 通过二级索引idx_name 只能定位主键值,需要额外再通过主键索引进行查询,才能得到最终结果。 这种二级索引通过主键索引进行再一次查询的操作叫做“回表” 这样的二级索引设计的好处:若记录发生了修改,则其它索引无须进行维护,除非记录的主键发生了修改 在索引组织表中,万物皆索引,索引就是数据,数据就是索引。 二级索引的性能评估 要比较顺序,对聚集索引性能友好 尽可能紧凑,对二级索引的性能和存储友好 函数索引(先了解) … 09 索引组织表:万物皆索引 3.组合索引(联合索引) 联合索引的结构是什么? ...

October 26, 2024 · 2 min · Chen-Hang