Insertando varias filas en MySQL

Resuelto Emma asked hace 13 años • 5 respuestas

¿La consulta de la base de datos es más rápida si inserto varias filas a la vez?

como

INSERT....

UNION

INSERT....

UNION

(Necesito insertar como 2-3000 filas)

Emma avatar Jul 31 '11 18:07 Emma
Aceptado

INSERTLas declaraciones que usan VALUESsintaxis pueden insertar varias filas. Para hacer esto, incluya varias listas de valores de columna, cada una entre paréntesis y separada por comas.

Ejemplo:

INSERT INTO tbl_name
    (a,b,c)
VALUES
    (1,2,3),
    (4,5,6),
    (7,8,9);

Fuente

Nicola Cossu avatar Jul 31 '2011 11:07 Nicola Cossu

Si tiene sus datos en un archivo de texto, puede usar LOAD DATA INFILE .

Al cargar una tabla desde un archivo de texto, utilice LOAD DATA INFILE. Esto suele ser 20 veces más rápido que usar declaraciones INSERT.

Optimización de declaraciones INSERT

Puede encontrar más consejos sobre cómo acelerar sus declaraciones insertadas en el enlace de arriba.

Jacob avatar Jul 31 '2011 11:07 Jacob

Simplemente use una SELECTdeclaración para obtener los valores de muchas líneas de las columnas elegidas y coloque estos valores en las columnas de otra tabla de una sola vez. Como ejemplo, las columnas "tamaño" y "precio" de las dos tablas "test_b" y "test_c" se completan con las columnas "tamaño" y "precio" de la tabla "test_a".

BEGIN;
INSERT INTO test_b (size, price)
  SELECT size, price
  FROM   test_a;
INSERT INTO test_c (size, price) 
  SELECT size, price
  FROM   test_a;
COMMIT;

El código está incrustado BEGINy COMMITse debe ejecutar solo cuando ambas declaraciones hayan funcionado; de lo contrario, se retirará toda la ejecución hasta ese punto.

sunilsingh avatar Jun 22 '2016 10:06 sunilsingh