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
(Je dois insérer comme 2-3000 lignes)
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
(Je dois insérer comme 2-3000 lignes)
Réponses:
INSERT
les instructions qui utilisent laVALUES
syntaxe peuvent insérer plusieurs lignes. Pour ce faire, incluez plusieurs listes de valeurs de colonne, chacune placée 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);
INSERT INTO Table SELECT 1, '14/05/2012', 3 UNION SELECT 2, '05/14/2012', 3
. bien sûr, ce ne sera que mieux si les valeurs insérées proviennent de différentes tables.
Si vous avez vos données dans un fichier texte, vous pouvez utiliser LOAD DATA INFILE .
Lors du chargement d'une table à partir d'un fichier texte, utilisez LOAD DATA INFILE. Ceci est généralement 20 fois plus rapide que l'utilisation d'instructions INSERT.
Optimisation des instructions INSERT
Vous pouvez trouver plus de conseils sur la façon d'accélérer vos instructions d'insertion 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: 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));
// db table name / blog_post / menu / site_title
// Insert into Table (column names separated with comma)
$sql = "INSERT INTO product_cate (site_title, sub_title)
VALUES ('$site_title', '$sub_title')";
// db table name / blog_post / menu / site_title
// Insert into Table (column names separated with comma)
$sql = "INSERT INTO menu (menu_title, sub_menu)
VALUES ('$menu_title', '$sub_menu', )";
// db table name / blog_post / menu / site_title
// Insert into Table (column names separated with comma)
$sql = "INSERT INTO blog_post (post_title, post_des, post_img)
VALUES ('$post_title ', '$post_des', '$post_img')";