Множественные вставки с XML против INSERTVALUESSELECTUNION ALL

Для SQL Server 2005, если я хочу вставить около 20 или 30 строк по три столбца в каждой, какой подход будет быстрее и эффективнее? Вызывающее приложение представляет собой консольное приложение C# 4.0 .Net.

а) Передача значений в виде XML в хранимую процедуру, их анализ и выполнение вставки
ИЛИ
б) Создайте команду SQL с INSERT...VALUES... SELECT() UNION ALL, как предлагается здесь: SQL Server 2005: вставка нескольких строк с помощью одного запроса ?

Спасибо.


person FMFF    schedule 21.02.2012    source источник


Ответы (1)


Вы их пробовали? Честно говоря, для 20 или 30 строк вам будет очень сложно найти разницу. В более крупном масштабе я ожидаю, что стоимость дополнительных данных и синтаксический анализ, связанный с XML для извлечения данных, сделают его менее эффективным выбором. В SQL Server 2008 есть более эффективный конструктор VALUES(), не требующий UNION ALL, а также новый подход, называемый табличными параметрами.

person Aaron Bertrand    schedule 21.02.2012
comment
Спасибо @Аарон Бертран. Я пытался, но, как вы правильно заметили, я потратил значительное количество времени на написание логики для построения и анализа XML. Я не смог заметить какого-либо значительного улучшения производительности подхода на основе XML для имеющейся задачи. Я знаю о новой конструкции INSERT VALUES в SQL Server 2008, но, увы, обновление SQL Server не зависит от меня. Еще раз спасибо. - person FMFF; 21.02.2012