La requête de base de données est-elle plus rapide si j'insère plusieurs lignes à la fois:
comme
INSERT....
UNION
INSERT....
UNION
(J'ai besoin d'insérer comme 2-3000 lignes)
Les instructions
INSERT
qui utilisent la syntaxeVALUES
peuvent insérer plusieurs lignes. Pour ce faire, incluez plusieurs listes de valeurs de colonne, chacune entre parenthèses et séparée par des virgules.
Exemple:
INSERT INTO tbl_name
(a,b,c)
VALUES
(1,2,3),
(4,5,6),
(7,8,9);
Si vous avez vos données dans un fichier texte, vous pouvez utiliser LOAD DATA INFILE .
Lorsque vous chargez une table à partir d'un fichier texte, utilisez LOAD DATA INFILE. Cela est généralement 20 fois plus rapide que d'utiliser des instructions INSERT.
Optimisation des instructions INSERT
Vous pouvez trouver plus de conseils pour accélérer vos déclarations d'insertion en cliquant sur le lien ci-dessus.
BEGIN;
INSERT INTO test_b (price_sum)
SELECT price
FROM test_a;
INSERT INTO test_c (price_summ)
SELECT price
FROM test_a;
COMMIT;
Voici une solution PHP prête à l'emploi avec une table n: m (relation plusieurs-à-plusieurs):
// get data
$table_1 = get_table_1_rows();
$table_2_fk_id = 123;
// prepare first part of the query (before values)
$query = "INSERT INTO `table` (
`table_1_fk_id`,
`table_2_fk_id`,
`insert_date`
) VALUES ";
//loop the table 1 to get all foreign keys and put it in array
foreach($table_1 as $row) {
$query_values[] = "(".$row["table_1_pk_id"].", $table_2_fk_id, NOW())";
}
// Implode the query values array with a coma and execute the query.
$db->query($query . implode(',',$query_values));