2012-02-21 1 views
1

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

а) Передача значений в XML для хранимой процедуры и разбор его и делать вставку
ИЛИ
б) Постройте команду SQL с INSERT...VALUES... SELECT() UNION ALL как предложено здесь: SQL Server 2005: Insert multiple rows with single query?

спасибо.

ответ

1

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

+0

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