2012-04-18 3 views
1

Что будет быстрее в исполнении в следующих случаях? (Требуется решить соответствующий подход в моем проекте)Что было бы быстрее .... много вставляют однозначные операторы или вставляют statament со многими значениями?

insert into table values (v1, v2, v3); 

или

insert into table1 value (v1) 
insert into table1 value (v2) 
insert into table1 value (v3) 

каковы ваши мнения?

ответ

3

Не мое мнение; но из опыта, делающего что-то в одном запросе, а не в нескольких, для достижения того же, всегда быстрее.

1

Если вы используете дозирование правильно, это не должно иметь большого значения. Первое будет быстрее.

0

Подход 1 будет быстрее, чем подход, 2, из-за следующих причин

1.Less сетевых вызовов 2.Less Компиляция/Синтаксический/Объяснить план/в БД

С уважением Abhi

0

Я думаю, что ваш синтаксис неверен. Если вы пытаетесь вставить несколько строк с одной вставкой, ваш запрос будет выглядеть следующим образом:

INSERT INTO table1 VALUES (v1), (v2), (v3) 

И исполнение с одним запросом всегда быстрее, чем несколько запросов (которые делают то же самое).

+0

Спасибо всем за ответ ... Я получил ур точку ... :) – user746458

0

Версия (v1, v2, v3) будет быстрее, но будьте осторожны, как это сделать лучше всего в вашем драйвере. В Java вы должны использовать простой INSERT INTO table VALUES (?) PreparedStatement и использовать addBatch(), чтобы объединить их в один более крупный оператор, который выполняется с помощью executeBatch().

См раздел 3.4: http://java.sun.com/developer/Books/JDBCTutorial/

Вы также должны включить rewriteBatchedStatements свойство в драйвере Connector/J: http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html

LOAD DATA INFILE будет еще быстрее, если это работает для вашего приложения.