Tengo una tabla con alrededor de 30 millones de filas en MySQL 5.5 usando el motor de almacenamiento InnoDB. Esta tabla tiene una clave externa que se vincula a otra tabla con alrededor de 3 millones de filas.
Quiero agregar una clave principal a la tabla más grande, pero no estoy seguro de cuál es la mejor manera de hacerlo. No hay una columna (o conjunto de columnas) existente que pueda usar para esto, entonces, ¿cómo debo hacer esto?
He visto algunas referencias a un ID de registro interno de InnoDB, pero no he encontrado si es accesible.
De lo contrario, tal vez deba volcar y volver a cargar los datos, agregando la identificación manualmente.
Gracias.
mysql
innodb
primary-key
Wodin
fuente
fuente
Respuestas:
Esta puede ser la forma incorrecta de hacerlo, pero ...
¿No podrías simplemente alterar la estructura de la tabla?
agregar una columna de clave principal a la tabla
entonces...
escribir un guión rápido para revisar toda la tabla
¿Agregar un valor de incremento automático a la nueva columna?
fuente
ALTER TABLE blah ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
y me tomó 2 horas y 18 minutos :) No intenté escribir en la mesa durante ese tiempo, pero las lecturas funcionaron bien.Así es como abordaría esto:
* Nota: Si la tabla de origen es InnoDB, las restricciones de clave externa se mantendrán y sobrevivirán al cambio de nombre. Entonces tendrá que hacer un cambio para remediar eso.
fuente