У меня есть приложение Qt, которое читает специальный текстовый файл, анализирует его и вставляет около 100000 строк во временную таблицу в базе данных Firebird. Затем он запускает хранимую процедуру для обработки этой временной таблицы и применения некоторых изменений к постоянным таблицам. В Firebird вставка 100000 строк во временную таблицу в памяти занимает около 8 секунд.
Теперь мне нужно реализовать такое поведение с использованием MS SQL Server 2008. Если я использую простые последовательные вставки, это займет около 76 секунд для 100000 строк. К сожалению, это слишком медленно. Я посмотрел на следующие пути:
- Временные таблицы (# и ##). Хранится на диске в схеме tempdb. Так что нет увеличения скорости.
- Массовая вставка. Очень хорошая скорость вставки, но нужна общая папка на стороне клиента или на сервере.
- Табличные переменные. MSDN говорит: «Не используйте табличные переменные для хранения больших объемов данных (более 100 строк)».
Итак, скажите, пожалуйста, как правильно увеличить скорость вставки из клиентского приложения в MSSSQL2008.
Спасибо.