在 MySQL 中使用自动增量 PK 的主要原因之一是,它保证对聚簇 PK 索引的所有插入都是有序的,因此速度很快。我明白了。
但是二级索引呢?假设我的表有一个二级索引。插入对于 PK 聚集索引来说是有序的,但是对于二级索引 B+ Tree 来说是无序的。
那么插入会不会仍然很慢,因为 MySQL 需要在插入时不断重新排列二级索引 B+ Tree?
我只是想知道在这里使用自动增量是否真的能给我带来插入性能方面的任何好处。非常感谢这里的一些澄清。
最佳答案
主键将是聚簇的,这意味着它直接指向磁盘上的数据。必须重新排列数据意味着必须移动完整记录。对于二级索引,它实际上只是一堆指向磁盘上位置的指针。二级索引与记录的顺序无关,因此必须在二级索引中移动指针就是移动指针。这比移动完整记录要快得多。
关于MySQL:乱序插入 PK B+ 树是否比乱序插入二级索引 B+ 树慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465233/