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

时间:2011-11-22 02:28:56

标签: mysql sql

使用命令时:

  ALTER TABLE my_table DROP PRIMARY KEY;

状态(SHOW PROCESSLIST时)显示为:

  copy to tmp table

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

1 个答案:

答案 0 :(得分:5)

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