簡體   English   中英

在mysql中插入多行

[英]Inserting multiple rows in mysql

如果我一次插入多行,數據庫查詢是否更快:

喜歡

INSERT....

UNION

INSERT....

UNION

(我需要插入 2-3000 行)

使用VALUES語法的INSERT語句可以插入多行。 為此,請包含多個列值列表,每個列表都用括號括起來並用逗號分隔。

例子:

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

來源

如果您的數據在文本文件中,則可以使用LOAD DATA INFILE

從文本文件加載表時,請使用 LOAD DATA INFILE。 這通常比使用 INSERT 語句快 20 倍。

優化 INSERT 語句

您可以在上面的鏈接中找到有關如何加快插入語句的更多提示。

BEGIN;
INSERT INTO test_b (price_sum)
  SELECT price
  FROM   test_a;
INSERT INTO test_c (price_summ) 
  SELECT price
FROM   test_a;
COMMIT;

這是一個可與 an:m(多對多關系)表一起使用的 PHP 解決方案:

// 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')";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM