SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.09.2014 09:52:17

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

Имеется документ, содержащий 1500 -3000 записей. (возможно и больше)
Имеется , к примеру , 2 таблицы в БД, куда надо поместить инфу
Документ парсится и подготавливаются запросы к БД, одна строка документа - 2 запроса к этим двум таблицам.

Проблема в том, что запросов становиться слишком много, если в документе 1500 строк, то будет 1500 запросов в одну таблицу и 1500 в другую. А если предположить, что возможен исходный документ с 10000 строк, тогда запросов будет 20 тысяч.

Делать их по-одному , не реально, слишком долго. Если делать их все сразу, подготовив массив из несколько тысяч строк, то ... я не знаю так делается ли?

А еще нужно будет обернуть это все в

START TRANSACTION;
... 3000 запросов...
COMMIT;


чтобы, либо все, либо ничего.

Как решаются подобные задачи?

Неактивен

 

#2 19.09.2014 09:54:34

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

Попробуйте конструкцию вида insert into t values(),(),(),(),(),...,();


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 19.09.2014 11:53:50

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

Re: Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

А если без транзакций? может я с транзакциями поторопился. Вообщем нужно оптимальное решение, что бы работало более менее быстро.

Попробуйте конструкцию вида insert into t values(),(),(),(),(),...,();

и что тут вставить 3000 значений в скобках??  с ума сойти...

Неактивен

 

#4 19.09.2014 12:07:22

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

То решение, что я предложил - оно как раз-таки без транзакций wink.
Не нужно сходить с ума, лучше посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=1556


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 19.09.2014 13:56:14

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

Re: Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

Во. спасибо. Это уже что-то. Во первых я увидел, что так можно делать, несколько сот записей в одном запросе.

Неактивен

 

#6 19.09.2014 14:06:36

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

Re: Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

ТОлько не понял к чему там пришли?  Какова скорость получилась в том случае? Скажите пожалуйста.

Отредактированно Cheb (19.09.2014 14:11:55)

Неактивен

 

#7 19.09.2014 17:22:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как вставить в несколько таблиц 1,5 - 3 тысяч записей?

У MySQL хорошие алогритмы для множественной вставки (bulk insert), поэтом скорость многократно превзойдет скорость в случае 3000 отдельных запросов.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson