У меня есть таблица с около 30 миллионов строк в MySQL 5.5 с использованием механизма хранения InnoDB. Эта таблица имеет внешний ключ, который ссылается на другую таблицу с примерно 3 миллионами строк.
Я хочу добавить первичный ключ в большую таблицу, но не уверен, как лучше это сделать. Там нет никакого существующего столбца (или набора столбцов), который я могу использовать для этого, так как я должен поступить об этом?
Я видел некоторые ссылки на внутренний идентификатор записи InnoDB, но не нашел, если это доступно.
В противном случае, возможно, мне потребуется сбросить данные и перезагрузить данные, добавив идентификатор вручную.
Спасибо.
mysql
innodb
primary-key
Водин
источник
источник
Ответы:
это может быть неправильный путь, но ..
не могли бы вы просто изменить структуру таблицы,
добавить столбец первичного ключа в таблицу
тогда...
написать быстрый скрипт, чтобы пройти всю таблицу
добавить автоинкрементное значение в новый столбец?
источник
ALTER TABLE blah ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
и это заняло 2 часа и 18 минут :) Я не пытался писать в таблицу в течение этого времени, но чтение работало нормально.Вот как я бы подошел к этому:
* Примечание. Если исходной таблицей является InnoDB, ограничения внешнего ключа будут сохранены и сохранятся после переименования. Так что вам придется внести изменения, чтобы исправить это.
источник