Чи швидше запит до бази даних, якщо я вставляю відразу кілька рядків:
подібно до
INSERT....
UNION
INSERT....
UNION
(Мені потрібно вставити як 2-3000 рядків)
Чи швидше запит до бази даних, якщо я вставляю відразу кілька рядків:
подібно до
INSERT....
UNION
INSERT....
UNION
(Мені потрібно вставити як 2-3000 рядків)
Відповіді:
INSERT
заяви, які використовуютьVALUES
синтаксис, можуть вставляти кілька рядків. Для цього включіть кілька списків значень стовпців, кожен укладений в круглі дужки та розділений комами.
Приклад:
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
. звичайно, це буде краще лише із вставлених значень, що надходять із різних таблиць.
Якщо ви маєте свої дані в текстовому файлі, ви можете використовувати ЗАВАНТАЖЕННЯ ДАНИХ ІНФІЛЮ .
Завантажуючи таблицю з текстового файлу, використовуйте ЗАВАНТАЖЕННЯ ДОДАТОК INFILE. Зазвичай це в 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;
Ось PHP-рішення, готове до використання з таблицею: m (багато хто-багато):
// 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')";