• 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(极客时间付费专栏)

  • 相关阅读:
    数组同时求极值
    约瑟夫环
    使用流迭代器, sort, co…
    Emacs 使用TAGS阅读源码
    Making Emacs Work For Me
    gnu libc 源码分享
    JavaSE 键盘事件类(KeyEvent)实现
    老子《道德经》第二十三章
    linux 系统没有默认的目录
    老子《首德经》第二十二章
  • 原文地址:https://www.cnblogs.com/yangjiming/p/10169613.html
Copyright © 2020-2023  润新知