Почему MySQL использует временную таблицу для удаления первичного ключа? - PullRequest
5 голосов
/ 22 ноября 2011

При использовании команды:

  ALTER TABLE my_table DROP PRIMARY KEY;

Состояние (когда ПОКАЗАТЬ ПРОЦЕССЛИСТ) отображается как:

  copy to tmp table

Зачем ему нужно использовать таблицу tmp для "отбрасывания" ограничения первичного ключа?

1 Ответ

5 голосов
/ 22 ноября 2011

Рассмотрим случай составного первичного ключа. В этом случае ядро ​​БД должно создать новый кластеризованный индекс из синтетического ключа, что потребует перемещения строк. (Имейте в виду, что строки физически упорядочены на диске первичным ключом.) Учитывая редкость этой ситуации, на самом деле не стоит обрабатывать особый случай, когда ваш первичный ключ уже является целым числом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...