我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 聚集索引和二级索引

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 聚集索引和二级索引

MySQL 聚集索引和二级索引

Clustered and Secondary Indexes(聚集索引和二级索引)

Every InnoDB table has a special index called the clustered index where the data for the rows is stored. Typically, the clustered index is synonymous with the primary key. To get the best performance from queries, inserts, and other database operations, you must understand how InnoDB uses the clustered index to optimize the most common lookup and DML operations for each table.

每张使用 InnoDB 作为存储引擎的表都有一个特殊的索引称为聚集索引,它保存着每一行的数据,通常,聚集索引就是主键索引。为了得到更高效的查询、插入以及其他的数据库操作的性能,你必须理解 InnoDB 引擎是如何使用聚集索引来优化常见的查找和 DML 操作。

  • When you define a PRIMARY KEY on your table, InnoDB uses it as the clustered index. Define a primary key for each table that you create. If there is no logical unique and non-null column or set of columns, add a new auto-increment column, whose values are filled in automatically.
    如果你的表定义了一个主键,InnoDB 就使用它作为聚集索引。因此,尽可能的为你的表定义一个主键,如果实在没有一个数据列是唯一且非空的可以作为主键列,建议添加一个自动递增列作为主键列。

  • If you do not define a PRIMARY KEY for your table, MySQL locates the first UNIQUE index where all the key columns are NOT NULL and InnoDB uses it as the clustered index.
    如果你的表没有定义主键,InnoDB 会选择第一个唯一非空索引来作为聚集索引。

  • If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index named GEN_CLUST_INDEX on a synthetic column containing row ID values. The rows are ordered by the ID that InnoDB assigns to the rows in such a table. The row ID is a 6-byte field that increases monotonically as new rows are inserted. Thus, the rows ordered by the row ID are physically in insertion order.
    如果你的表既没有主键,又没有合适的唯一索引,InnoDB 内部会生成一个隐式聚集索引 —— GEN_CLUST_INDEX,该索引建立在由 rowid 组成的合成列上。数据行根据 InnoDB 分配的 rowid 排序,rowid 是一个 6 字节的字段,随着数据插入而单调递增。也就是说,数据行根据 rowid 排序实际上是根据插入顺序排序。

How the Clustered Index Speeds Up Queries(聚集索引如何提升查询效率)

Accessing a row through the clustered index is fast because the index search leads directly to the page with all the row data. If a table is large, the clustered index architecture often saves a disk I/O operation when compared to storage organizations that store row data using a different page from the index record.
通过聚集索引来访问一行数据是非常快的,这是因为所有的行数据和索引在同一页上。如果表特别大,相较于行数据和索引在不同页上存储结构(比如 myisam 引擎),这将大大节省磁盘 I/O 资源。

How Secondary Indexes Relate to the Clustered Index(二级索引和聚集索引如何关联)

All indexes other than the clustered index are known as secondary indexes. In InnoDB, each record in a secondary index contains the primary key columns for the row, as well as the columns specified for the secondary index. InnoDB uses this primary key value to search for the row in the clustered index.
除了聚集索引外的其他索引类型都属于二级索引。在 InnoDB 中,二级索引中的每个记录都包含该行的主键列,以及二级索引指定的列;聚集索引中,InnoDB 通过主键值来查询数据行。

If the primary key is long, the secondary indexes use more space, so it is advantageous to have a short primary key.
如果主键过长,二级索引就需要更大的空间,因此,使用短的主键列是很有利的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 聚集索引和二级索引

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 聚集索引和二级索引

Clustered and Secondary Indexes(聚集索引和二级索引)Every InnoDB table has a special index called the clustered index where the data for the
MySQL 聚集索引和二级索引
2022-03-11

搞懂MySQL聚集索引与非聚集索

我们在开发或者面试的过程中经常会涉及到索引。今天我们来详细剖析一下索引常用的知识点。首先我们先介绍mysql的常用的存储引擎,其次是索引分类。

mysql聚簇索引和非聚簇索引区别

聚簇索引的行按索引键顺序物理存储,非聚簇索引的行不按顺序存储且包含指向数据行的指针。聚簇索引提高范围和等值查询性能,每个表只能有一个;非聚簇索引允许在多个列上创建索引,每个表可以有多个。MySQL 聚簇索引和非聚簇索引的区别聚簇索引和非聚
mysql聚簇索引和非聚簇索引区别
2024-08-01

mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用

这篇文章主要介绍了mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。聚集索引(Clustered Index)聚集索引就是
2023-06-29

主键索引就是聚集索引?MySQL 索引类型大梳理

之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。

MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么

今天小编给大家分享一下MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-04-21

MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍

目录一、索引类型二、聚簇索引和非聚簇索引三、覆盖索引四、联合索引最左前缀匹配原则索引下推五、唯一索引一、索引类型索引根据底层实现可分为B-Tree索引和哈希索引,大部分时候我们使用的都是B-Tree索引,因为它良好的性能和特性更适合于构建
2023-04-19

MySQL之聚簇索引与非聚簇索引

MySQL之聚簇索引与非聚簇索引 聚簇索引非聚簇索引聚簇索引和非聚簇索引的区分MySQL索引实现InnoDB索引实现MyISAM索引实现 问答 索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,主要讨论Inn
2023-08-30

MySQL聚簇索引和非聚簇索引的区别详情

目录聚簇索引非聚簇索引总结前言:在 mysql 默认引擎 InnoDB 中,索引大致可分为两类:聚簇索引和非聚簇索引,它们的区别也是常见的面试题,所以我们今天就来盘它们。聚簇索引聚簇索引(Clustered Index)一般指的是主键
2022-06-14

mysql聚簇索引和非聚簇索引有什么区别

MySQL中的聚簇索引和非聚簇索引是两种不同的索引类型,它们在存储和查询数据时有一些区别:聚簇索引:聚簇索引将数据行存储在索引的叶子节点中,而不是单独的数据页中。这意味着索引本身就是数据的一部分,可以通过索引直接访问数据,而不需要额外的查找
mysql聚簇索引和非聚簇索引有什么区别
2024-04-09

mysql聚簇索引和非聚簇索引有什么不同

MySQL中的聚簇索引和非聚簇索引有以下不同点:1. 存储方式:聚簇索引中,数据行的顺序与索引的顺序一致,索引直接指向数据行。非聚簇索引中,索引是独立于数据行的,索引中的每个条目都包含一个指向对应数据行的指针。2. 数据访问:使用聚簇索引进
2023-09-15

编程热搜

目录