聚集索引与二级索引

笔记内容整理自《高性能Mysql》以及mysql官方文档
索引是在存储引擎层实现,因此不同的存储引擎有各自的索引工作方式。
Innodb使用的是B+Tree
每个innodb表都有一个聚簇索引,聚簇索引中 存储了行的数据。
一般情况下,聚簇索引等同于主键。
可以通过聚簇索引优化查询、插入以及其他数据库操作。
聚簇索引定义
当在表中定义主键时,innodb默认使用主键作为聚簇索引,如果没有逻辑唯一列并且是非空的,则应该添加一个自增的列。
如果没有主键时,Mysql会找到唯一索引列中的第一列同时非空的列作为聚簇索引。
如果表中没有主键或者合适的唯一索引,则innodb会在内部生成一个隐藏的聚簇索引。
聚簇索引如果加快查询
通过聚簇索引访问行快,是因为索引直接包含所有行数据。
存储引擎不在需要进行全表扫描来获得需要的数据,而是从索引的根节点开始搜索。根节点中存放的是指向子节点的指针,存储引擎根据这些指针向下查找,通过比对节点页的值和要查询的值可以找到合适的指针进入下层节点,这些指针实际上定义了子节点页中值得上限和下限。最终存储引擎要么找到对应的值,要么该记录不存在。 叶子节点比较特殊,他们的指针指向的是被索引的数据.
二级索引如何与聚簇索引关联
出了聚簇索引外其他的所有索引都是二级索引。在innodb中,二级索引中每个记录都包含该行的主键列以及二级索引指定的列。Innodb使用主键值来搜索聚簇索引中的行。
聚簇索引特点
聚簇索引是顺序存储的.
索引减少了服务器需要扫描的数据量
索引可以帮助服务器避免排序和临时表
索引可以将随机I/0变为顺序I/O

猜你喜欢

转载自www.cnblogs.com/use-D/p/9551699.html
今日推荐