为什么MySQL使用临时表来删除主键?

Dre*_*rew 5 mysql sql

使用命令时:

  ALTER TABLE my_table DROP PRIMARY KEY;
Run Code Online (Sandbox Code Playgroud)

状态(当SHOW PROCESSLIST时)显示为:

  copy to tmp table
Run Code Online (Sandbox Code Playgroud)

为什么需要使用tmp表来"删除"主键约束?

Mic*_*ior 5

考虑复合主键的情况.在这种情况下,数据库引擎必须从合成密钥创建一个新的聚簇索引,这需要移动行.(请记住,主键通过磁盘对磁盘进行物理排序.)鉴于这种情况很罕见,处理主键已经是整数的特殊情况并不值得.