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

¿Cómo puede mysql insertar millones de registros más rápido?

Lo más probable es que esté insertando registros como este:

INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");

Enviar una nueva consulta cada vez que necesite INSERT algo es malo para el rendimiento. En su lugar, combine esas consultas en una sola consulta, como esta.

INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2");

También puede leer más sobre la velocidad de inserción en MySQL Docs . Describe claramente lo siguiente.

Por supuesto, no los combine TODOS, si la cantidad es ENORME. Digamos que tiene 1000 filas que necesita insertar, entonces no lo haga de una en una. Pero probablemente no debería intentar tener las 1000 filas en una sola consulta. En su lugar, divídalo en tamaños más pequeños.

Si sigue siendo muy lento, es posible que se deba a que su servidor es lento.

Tenga en cuenta que, por supuesto, no necesita todos esos espacios en la consulta combinada, eso es simplemente para obtener una mejor visión general de la respuesta.