349

如果我一次插入多行,数据库查询是否更快:

INSERT....

UNION

INSERT....

UNION

(我需要插入 2-3000 行)

4

5 回答 5

1323

INSERT使用VALUES语法的语句可以插入多行。为此,请包含多个列值列表,每个列表都包含在括号中并用逗号分隔。

例子:

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

来源

于 2011-07-31T11:10:28.010 回答
64

如果您将数据保存在文本文件中,则可以使用LOAD DATA INFILE

从文本文件加载表时,使用 LOAD DATA INFILE。这通常比使用 INSERT 语句快 20 倍。

优化 INSERT 语句

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

于 2011-07-31T11:18:49.397 回答
33
BEGIN;
INSERT INTO test_b (price_sum)
  SELECT price
  FROM   test_a;
INSERT INTO test_c (price_summ) 
  SELECT price
FROM   test_a;
COMMIT;
于 2016-06-22T10:53:41.877 回答
-1

这是一个可用于: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));
于 2017-02-20T09:25:25.510 回答
-15
// 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')";
于 2016-09-03T21:47:50.110 回答