clustered index和secondary indexes

Every InnoDB table has a special index called the clustered index where the data for the rows is stored.

If you define a PRIMARY KEY on your table, the index of the primary key is the clustered index.

每个InnoDB 表有一个特定的索引叫做clustered index,存储行的数据。

If you do not define a PRIMARY KEY for your table, MySQL picks the first UNIQUE index that has only NOT NULL columns as the primary key and InnoDB uses it as the clustered index. If there is no

such index in the table, InnoDB internally generates a hidden clustered 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.

如果你的表没有定义主键,MySQL 选择第一个UNIQUE index 有NOT NULL 列作为primary key ,InnoDB 使用它作为 clustered index.

如果表中没有这样的索引,InnoDB 内部生成一个隐藏的 clustered index 在虚拟的列包含ROW ID值。

记录按ID 排序,InnoDB 指定这行的行在一个表里。

row ID 是一个6个字节的列 当行记录插入后自动增加

Accessing a row through the clustered index is fast because the row data is on the same page where the index search leads. 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. (For example, MyISAM uses one file for data rows and another for index

records.)

通过 clustered index 访问记录是快速的,因为记录数据在相同的页,当索引搜索时。如果表很大, clustered index结构经常节约大量的磁盘I/O操作 相比存储引擎组织存储的记录

使用不同的页。

比如,MyISAM 使用一个文件存储数据另一个文件存储索引记录

从物理意义上来讲,InnoDB表由共享表空间、日志文件组(redo文件组)、表结构定义文件组成。若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_name.ibd的文件,在此文件中,存储与该表

相关的数据、索引、表的内部数据字典信息。表结构文件则以.frm结尾,这与存储引擎无关。

In InnoDB, the records in non-clustered indexes (also called secondary indexes) contain the primary key value for the row.

InnoDB uses this primary key value to search for the row in the clustered index. If the primary key is long, the secondary indexes use more space,

so it is advantageous to have a short primary key.

在InnoDB, 记录在 non-clustered indexes (也被称为 secondary indexes) 包含主键值的记录,

InnoDB 使用primary key value 来搜索在clustered index中的记录, 如果 primary key太长,

secondary indexes 使用更多的空间,
这里的 secondary index

第二索引就是非主键索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值