Массовая вставка сравнения производительности с использованием параметров .Net Bulk Copy или Table Value в SQL Server 2008 - PullRequest
1 голос
/ 03 января 2012

Я работаю над настольным приложением в VB.Net (4.0) Будет много SQL-скриптов, которые содержат много запросов на вставку. В настоящее время мы запускаем сценарии с использованием SMO (http://msdn.microsoft.com/en-us/library/ms162557.aspx)

В одну сторону

Для повышения производительности мы планируем изменить сценарии sql на файл xml (вместо запросов на вставку он будет иметь данные xml с правильным определением xsd). Загружает xml в dataSet и используя SQL Bulk Copy, который мы пытаемся вставить в SQL Server.

Второй способ

Загружает XML в dataSet Создает пользовательский тип таблицы на основе таблицы данных в наборе данных (созданный из файла XML) и создает хранимую процедуру, в которой в качестве этого типа таблицы используется параметр. В этом SP он будет содержать вставить в таблицу выберите * из таблицы значение параметра.

Поэтому, пожалуйста, предложите мне лучший и подходящий способ. Заранее спасибо.

1 Ответ

1 голос
/ 03 января 2012

Ненаучный ответ ...

  • SQLBulkCopy использует другой оптимизированный API
  • Табличный параметр действует как "обычный" SQL

Подход TVP будет иметь такой же порядок производительности, как и выполнение отдельных операторов INSERT, что я ожидаю медленнее, чем SQLBulkCopy.

Однако я ожидаю, что каждый метод зависит от того, сколько у вас строк: для 1000 с или 10 000+ на пакет я бы использовал SQLBulkCopy, не задумываясь, поскольку мне не нужна хранимая процедура.

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