深入浅出索引--Mysql45讲笔记记录 打卡day3

看了极客时间的mysql45讲记录一下自己理解的关于索引部分

为什么会有索引呢?

答:索引就像书的目录一样,可以让你快速知道你要看的部分在多少页。换句话说,索引就是为了提高数据库的查询效率。

索引的数据结构有多种,哈希表,有序数组,搜索树。

在innodb中表都是按照主键顺序以索引的形式存放在b+tree中的。

每个索引对应一颗b+tree.

根据叶子节点的内容,索引类型分为主键索引(聚簇索引)和非主键索引(二级索引或者普通索引)。主键索引的叶子节点存的是整行数据。非主键索引叶子节点内容是主键的值。

基于主键索引和普通索引的查询区别是什么?

主键索引查询的时候只需要搜索id这颗b+tree.

普通索引查询的时候需要先搜索当前索引树,然后找到主键的值,再通过主键值去id索引树搜索一次,这个过程叫回表。也就是说他俩的区别就是普通索引比主键索引多扫描一棵树。因此我们尽量使用主键索引。

最左前缀原则

如果为每一种查询都设计一个索引,索引就太多了,也会比较占空间。b+tree可以利用索引的最左前缀,来定位记录。

索引下推

可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表的次数。

 

数据页:默认的页大小为 16KB,每个页中至少存储有 2 条或以上的行记录。

 

posted @ 2019-06-22 22:23  幸福的波波肠  阅读(168)  评论(0编辑  收藏  举报