MYSQL:索引

时间:2020-07-24 09:20:24   收藏:0   阅读:76

索引

一个排序的数据结构,用来协助提升查询效率。InnoDB中是B+树。

Page

InnoDB中存储数据的最小逻辑单位,一个页16KB,存储多个行。
一个节点上就是一个页的大小,页的数据在节点中。加载节点的次数越多,I/O寻址的次数越多。B+树矮胖 减少了寻址次数。

B+树和B树区别

B+树的叶子节点是一个个页,先找到页的地址后,具体的数据在页中查找。

自适应哈希索引

为热点页自动创建哈希索引,提升访问效率。无法显示创建哈希索引。

聚簇索引

索引的键值的逻辑顺序和表数据行的物理存储顺序是一致的。
主键索引 = 聚簇索引。因为实际数据是按主键顺序创建的。
InnoDB的表一定会有主键,没有指定主键会用不为null 的UNIQUE key创建,假如这种key也不存在,会用隐藏的row_id当主键。

如何建立索引

覆盖索引

直接在辅助索引查询到所需要的数据,不用去主键索引再次查询(回表),就叫覆盖索引,效率很高。

索引条件下推(默认开启)

假如过滤条件可以在索引中进行,那么直接在索引中过滤。
索引的过滤在存储引擎中进行。
数据的过滤在服务端进行。

为什么不建议用无序字段建立索引

无序字段插入很容易插入到现有索引页的某个位置,这时候不得不移动元素,从而产生额外的开销。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!