MySQL:乱序插入 PK B+ 树是否比乱序插入二级索引 B+ 树慢?

标签 mysql database-design insert auto-increment clustered-index

在 MySQL 中使用自动增量 PK 的主要原因之一是,它保证对聚簇 PK 索引的所有插入都是有序的,因此速度很快。我明白了。

但是二级索引呢?假设我的表有一个二级索引。插入对于 PK 聚集索引来说是有序的,但是对于二级索引 B+ Tree 来说是无序的。

那么插入会不会仍然很慢,因为 MySQL 需要在插入时不断重新排列二级索引 B+ Tree?

我只是想知道在这里使用自动增量是否真的能给我带来插入性能方面的任何好处。非常感谢这里的一些澄清。

最佳答案

主键将是聚簇的,这意味着它直接指向磁盘上的数据。必须重新排列数据意味着必须移动完整记录。对于二级索引,它实际上只是一堆指向磁盘上位置的指针。二级索引与记录的顺序无关,因此必须在二级索引中移动指针就是移动指针。这比移动完整记录要快得多。

关于MySQL:乱序插入 PK B+ 树是否比乱序插入二级索引 B+ 树慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465233/

相关文章:

php - 使用 where 子句按其他表中的列总和排序

用于重复事件的 MySQL 模式 - 按特定日期查询

mysql - 在数据库中使用 1 位代码 VS ENUM 的描述性字符串?

sql-server - 复合 vs 代理主键

database-design - 哪些工具可用于 TDDD(测试驱动数据库开发)?

php - 如何使用 PHP 从 MySQLi 进行分组

mysql - 优化连接多个行计数子查询的 View 模式

mysql - 如何改进 insert into select 等待表行为

php - 将查询结果插入到同一个表中

php - 插入 session ID 和段