美文网首页
mysql 聚簇索引 非聚簇索引

mysql 聚簇索引 非聚簇索引

作者: 乌木山 | 来源:发表于2019-11-07 14:37 被阅读0次

1 索引类型

1.1 聚簇索引

聚簇索引的叶子节点,存储就是数据节点。索引叶子节点的顺序和数据存储顺序一致。

1.2 非聚簇索引

非聚簇索引,叶子节点存储的是指向数据节点的指针。也就是说,数据节点无需和索引节点顺序保持一致。

2 mysql 索引

2.1 MyISAM

MYISAM是按列值与行号来组织索引的。它的叶子节点中保存的是指向存放数据的物理块的指针。
另外,从MYISAM存储的物理文件我们能看出,MYISAM引擎的索引文件(.MYI)和数据文件(.MYD)是相互独立的。


MyISAM索引结构

2.2 InnoDB
mysql 的 InnoDB引擎,主键索引和二级索引的结构有所不同。
InnoDB的主键索引是聚簇索引,因此走主键索引可以立即定位到数据所在位置。


primary key

而对于二级索引,其叶子节点存储的是索引key和主键值。因此二级索引首先查询到数据的主键值,然后再拿主键值到主键索引里查到对应的数据块。


secondary key

解释完聚簇索引和非聚簇索引,就很好理解两类索引查询数据的流程了:


数据查询流程

3 思考

  • InnoDB辅助键索引为什么存储的是主键值,而不直接存储指向数据的指针?
    如果存储数据指针的话,每次出现数据行移动或者数据页分裂时,都不得不同时更新二级索引指针。而存储主键值的话,则很好的避免了这一维护工作。

4 参考资料

https://blog.csdn.net/alexdamiao/article/details/51934917
https://www.jianshu.com/p/54c6d5db4fe6
https://blog.csdn.net/lisuyibmd/article/details/53004848

相关文章

  • MySQL索引

    聚簇索引和非聚簇索引 只有Innodb有聚簇索引,MyISAM引擎没有聚簇索引。 主键一定是聚簇索引,MySQL的...

  • 索引

    mysql中的索引 MySQL中普遍使用B+Tree做索引,但在实现上又根据聚簇索引和非聚簇索引而不同。 聚簇索引...

  • 面试总结

    mysql 索引的类型、索引的底层结构、索引失效的情况聚簇索引和非聚簇索引mysql的隔离级别, innerdb默...

  • mysql 聚簇索引 非聚簇索引

    1 索引类型 1.1 聚簇索引 聚簇索引的叶子节点,存储就是数据节点。索引叶子节点的顺序和数据存储顺序一致。 1....

  • MySQL:聚簇索引

    什么是聚簇索引?什么时候使用聚簇索引和非聚簇索引? 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据非...

  • InnoDB-索引

    四、索引 mysql支持的常见索引:B+,全文、hash 1.B+树索引 B+树索引可以分为聚簇索引和非聚簇索引。...

  • 数据库

    介绍一下聚簇索引和非聚簇索引 聚簇索引(innobe)的叶子节点就是数据节点 而非聚簇索引(myisam)的叶子节...

  • 聚簇索引非聚簇索引

    从数据结构角度1、B+树索引2、hash索引3、FULLTEXT索引(InnoDB引擎5.7以后支持)4、R-Tr...

  • 聚簇索引非聚簇索引

    聚簇索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。MySQL数据库中innodb存储引擎,B+树索...

  • MySql数据库相关

    聚簇索引与非聚簇索引(也叫二级索引) 通俗点讲 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据 非聚...

网友评论

      本文标题:mysql 聚簇索引 非聚簇索引

      本文链接:https://www.haomeiwen.com/subject/crbmbctx.html