MySQL实战04の索引(上)

1. 为什么使用索引?

索引就是为了提高数据查询的效率,就像书的目录一样。

 

2. 索引的常见模型 

哈希表
  哈希表是一种以键-值存储数据的结构,输入key,便可以找到对应的value。区间查询需全表扫描,效率低。适用于只有等值查找的场景,比如
Memcached以及其他的NoSQL引擎
有序数组
      按顺序存储,在等值查询和范围查询场景中的性能就都非常优秀。但是更新数据行必须移动插入记录后的所有记录,成本太高。只适用于静态存储引擎,存储不会再更新的数据。
搜索树
    二叉搜索树的特点是:每个节点的左儿子小于父节点,父节点又小于右儿子。因为索引不止存在内存中,还要写在磁盘上,查询为了尽量少的读磁盘,我们要使用N叉树,N取决于数据块的大小。
MYSQL的InnoDB使用的是B
+树,每一个索引对应一棵B+
  B+ 树能够很好地配合磁盘的读写特性,减少单次查询的磁盘访问次数。 

 

3. 索引类型

主键索引(聚簇索引)
     主键索引的叶子节点存的是整行数据
非主键索引(二级索引)
     非主键索引的叶子节点内容是主键的值
基于主键索引和普通索引的查询有什么区别?
  主键查询只需要搜索ID的索引树;普通索引需要先搜索字段的索引树得到ID值,再到ID索引树搜索一次,这个过程成为回表(需要多扫描一棵索引树);
从性能和存储方面考量,自增主键往往是更合理的选择。

 

总结

理解索引的模型和索引的类型

 原文地址https://time.geekbang.org/column/article/69236(极客时间付费专栏)

posted @ 2018-12-24 17:03  华格瑞沙  阅读(114)  评论(0编辑  收藏  举报