gpt4 book ai didi

mysql - 在 MySQL 中更改表的主键会发生什么?

转载 作者:行者123 更新时间:2023-11-29 05:04:27 25 4
gpt4 key购买 nike

在MySQL中,

  • 每当我更改表的主键时,将删除原始主键上的原始索引并在新主键上创建新索引是否正确?

  • 基于主键的索引是否总是聚集的?如果是。改变表的主键时,要移动的表中的记录是否按照新主键的顺序存储?

谢谢。

最佳答案

MySQL 的默认存储引擎是 InnoDB。 InnoDB 总是将表存储为聚簇索引,使用主键作为聚簇索引。参见 https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html有关详细信息。

如果您更改为表的主键定义的列,例如如下所示:

ALTER TABLE MyTable DROP PRIMARY KEY, ADD PRIMARY KEY (id2);

这将需要将该表的所有页面复制到新布局,使用新定义的主键作为聚集索引。

这不是唯一需要表复制的操作。任何更改行大小的 ALTER TABLE 都将执行表复制。例如。添加/删除列、更改数据类型(有一些异常(exception))、更改列的可空性等。参见 https://dev.mysql.com/doc/refman/8.0/en/innodb-create-index-overview.html详情

P.S.:我懒得再回答关于 MyISAM 存储引擎的问题了。它即将被弃用。人们越早停止将 MyISAM 视为可行的选择越好。

关于mysql - 在 MySQL 中更改表的主键会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51272294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com