美文网首页
4. 聚簇索引(一级)与非聚簇索引(二级)

4. 聚簇索引(一级)与非聚簇索引(二级)

作者: lj72808up | 来源:发表于2021-04-26 11:35 被阅读0次

1. 什么叫聚蔟

聚簇指将索引和数据放在一起, 因此:

  • 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据
  • 非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行(innodb中叶子节点给出聚簇索引的值)

2. 聚簇索引与主键

主键在 mysql 中是很重要的.

  • 聚簇索引默认是主键
  • 如果表中没有定义主键, 会选择表中唯一的非空索引代替.
  • 如果没有这样的索引, InnoDB 会隐式定义一个主键来作为聚簇索引

聚簇索引重要是因为. 其它类型的索引, 叶子节点记录的都是聚簇索引的值, 只有聚簇索引的叶子节点记录的行的物理存储位置. 因此, 使用其它索引查找记录都要经过两步:

  1. 查找该索引对应的聚簇索引值
  2. 查找该聚簇索引对应的行物理地址

每次使用辅助索引检索都要经过两次B+树查找

3. 为什么主键是自增主键

  • 为什么主键通常建议使用自增id
    聚簇索引的数据物理存放顺序与索引顺序一致.即:只要索引是相邻的,那么对应的行数据也一定是相邻的存放在磁盘上。如果主键不是自增id,那么会不断地调整数据的物理地址、分页,当然也有其他一些措施来减少这些操作,但却无法彻底避免。但如果是自增的,那就简单了,它只需一页一页地写,索引结构相对紧凑,磁盘碎片少,效率也高。
  • 为什么使用 UUID 作为主键会大幅度降低效率
    UUID 作为主键, 导致相邻的聚簇索引值生成在不同的叶子节点. 因此在调入一个节点的聚簇索引数据时, 会造成严重的缺页.

相关文章

  • MySql数据库相关

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

  • # 索引

    InnoDB来说:主键=聚簇索引(clustered index ),非主键=非聚簇索引=是二级索引=辅助索引(s...

  • MySQL:聚簇索引

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

  • MySQL索引

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

  • MYSQL Innodb中的聚簇索引和非聚簇索引

    聚簇索引 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种。存储引擎Innodb中的...

  • Mysql索引:图文并茂,深入探究索引的原理和使用

    目录 前言 1 索引原理探究 1.1 B树与B+树1.2 聚簇索引与非聚簇索引1.3 索引原理图示1.3.1 聚簇...

  • 数据库

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

  • 聚簇索引与非聚簇索引

    刚开始学数据库SQL的时候,就知道有主键啊(Primary-key),外键啊(Foreign-key)啥的,连个表...

  • 聚簇索引与非聚簇索引

    InnoDB 聚簇索引 InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用...

  • 聚簇索引与非聚簇索引

    聚簇索引:将数据与索引存放到一起,索引结构的叶子结点保存了行数据(索引临近的记录在物理存储上也是临近的)非聚簇索引...

网友评论

      本文标题:4. 聚簇索引(一级)与非聚簇索引(二级)

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