MySQL 聚集索引和二级索引「建议收藏」

MySQL 聚集索引和二级索引「建议收藏」Clustered and Secondary Indexes(聚集索引和二级索引) Every InnoDB table has a special index called the cluster

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.
如果主键过长,二级索引就需要更大的空间,因此,使用短的主键列是很有利的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9509.html

(0)
上一篇 2023-02-06
下一篇 2023-02-06

相关推荐

  • Python Tkinter Grid布局基础

    Python Tkinter Grid布局基础在Python的GUI编程中,Grid布局是一种非常常见的布局方式,它可以使我们更加方便地对窗口组件进行布局和管理。本文将为大家介绍Python Tkinter中的Grid布局基础知识,帮助读者掌握Grid布局的使用方法,从而更加灵活地设计Python窗口应用程序。

    2024-06-02
    50
  • IK分词器的安装与使用

    IK分词器的安装与使用分词器 什么是IK分词器? 分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,Elasticsearch

    2023-03-28
    159
  • 使用Python列表添加信息

    使用Python列表添加信息在Python中,列表是一个十分常用的数据类型,它可以用来存储多个值。列表不仅可以用来存储简单的数字和字符串,还可以存储复杂的数据类型,并且支持添加、删除、修改和查询等常见操作。在本文中,我们将着重讲解如何使用Python列表来添加信息,以及添加信息的一些技巧和实用案例。

    2024-09-08
    19
  • Python Tkinter GUI布局方案

    Python Tkinter GUI布局方案Python Tkinter是一种Python的标准GUI库,它提供了丰富的图形用户界面组件和功能,让开发者能够方便地创建漂亮、可靠的用户界面。布局(Layout)是Tkinter GUI开发中一个非常重要的环节,它决定了每个组件在屏幕上的位置、大小以及与其他组件之间的关系。在本文中,我们将探讨Python Tkinter中常用的布局方案及其优缺点,并提供相应的代码示例。

    2024-01-22
    111
  • MySQL必知必会–第二章~第四章–MySQL简介[通俗易懂]

    MySQL必知必会–第二章~第四章–MySQL简介[通俗易懂]1.DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机—服务器的DBMS。服务器部分是 负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务 器的计算机上。 2.My…

    2023-02-11
    140
  • mysql设置编码格式-[亲测有效]

    mysql设置编码格式-[亲测有效]创建table的时候就使用utf8编码 在每次创建表的时候都在最后加上 就可以很好的支持中文 修改已经有的table的编码 当使用默认编码创建了一个table的时候,是不能支持中文的,这时候使用如下语

    2023-01-31
    148
  • 使用Python转义符打造震撼标题!

    使用Python转义符打造震撼标题!Python转义符可以用来表示一些特殊字符,例如反斜杠\可以转义单引号、双引号和换行符等。常用的转义符有:

    2024-09-08
    18
  • 【从零单排HBase 01】从一无所知到5分钟快速了解HBase「建议收藏」

    【从零单排HBase 01】从一无所知到5分钟快速了解HBase「建议收藏」最近公司正好准备投入HBase,因此做了一些基础学习准备,所以先暂时停止MySQL的更新,把HBase的学习心得跟大家分享一下,接下来一段时间都会发布HBase相关内容。 在学的过程中,发现跟MyS…

    2023-02-04
    143

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注