Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como o mysql pode inserir milhões de registros mais rapidamente?


É mais provável que você esteja inserindo registros assim:
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");

Enviando uma nova consulta cada vez que você precisa INSERT algo é ruim para o desempenho. Em vez disso, combine essas consultas em uma única consulta, como esta.
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2");

Você também pode ler mais sobre a velocidade de inserção nos Documentos MySQL . Ele descreve claramente o seguinte.

Claro que não combine TODOS eles, se a quantidade for ENORME. Digamos que você tenha 1.000 linhas que precisa inserir e não faça isso uma de cada vez. Mas você provavelmente não deve tentar ter todas as 1.000 linhas em uma única consulta. Em vez disso, divida-o em tamanhos menores.

Se ainda estiver muito lento, pode ser porque seu servidor está lento.

Observe que você obviamente não precisa de todos esses espaços na consulta combinada, isso é simplesmente para obter uma visão geral melhor da resposta.