Сравнение лучше вставить в запрос - PullRequest
3 голосов
/ 09 июня 2010

Какой из следующих запросов имеет лучшую производительность? Каковы преимущества / недостатки обоих запросов? Я хочу обсудить сценарий для вставки 1000 строк и 100 тыс. Строк Спасибо.

первый

INSERT INTO table_name (col1,col2) VALUES (value1, value2);
INSERT INTO table_name (col1,col2) VALUES (value3, value4);

второй

INSERT INTO table_name
SELECT (col1,col2) 
FROM (
    SELECT value1 as col1, value2 as col2 UNION ALL
    SELECT value3 as col1, value4 as col2
) A

Ответы [ 2 ]

2 голосов
/ 09 июня 2010

Второй запрос будет работать лучше, потому что ядро ​​БД должно анализировать и выполнять только один оператор. Но разница будет незначительной и будет иметь значение только для больших вставок (более 100). Но лучшим подходом будет

INSERT INTO table_name (col1,col2) VALUES (value1, value2),(value3, value4); 

но ваш синтаксис для запроса 2 должен быть INSERT INTO table_name SELECT col1, col2 FROM (SELECT значение1 в качестве col1, значение2 в качестве col2 UNION ALL SELECT значение3 в качестве col1, значение4 в качестве col4) A

2 голосов
/ 09 июня 2010

Я думаю, вам нужно использовать Bulk Insert. Вот пример в .net http://www.dotnetcurry.com/ShowArticle.aspx?ID=323&AspxAutoDetectCookieSupport=1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...