sql >> Base de Datos >  >> RDS >> Mysql

MySQL copia eficientemente todos los registros de una tabla a otra

Solo hay una cosa que te estás perdiendo. Especialmente, si está utilizando InnoDB, desea agregar explícitamente una cláusula ORDER BY en su declaración SELECT para asegurarse de que está insertando filas en el orden de la clave principal (índice agrupado):

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

Considere eliminar los índices secundarios en la tabla de respaldo si no son necesarios. Esto también ahorrará algo de carga en el servidor.

Finalmente, si está utilizando InnoDB, reduzca la cantidad de bloqueos de fila que se requieren y bloquee explícitamente ambas tablas:

LOCK TABLES product_backup WRITE;
LOCK TABLES product READ;
INSERT INTO product_backup SELECT * FROM product ORDER BY product_id;
UNLOCK TABLES;

Las cosas de bloqueo probablemente no harán una gran diferencia, ya que el bloqueo de filas es muy rápido (aunque no tan rápido como los bloqueos de tablas), pero ya que lo pidió.