Выберите 100K + записей быстро - PullRequest
2 голосов
/ 18 февраля 2011

Мне нужно выбрать около 100k + записей из таблицы SQL и выполнить некоторую обработку, а затем выполнить массовую вставку в другую таблицу.Я использую SQLBulkCopy, чтобы выполнить массовую вставку, которая выполняется быстро.Для получения более 100 тыс. Записей я сейчас использую DataReader.

Проблема: иногда я получаю сообщение об ошибке тайм-аута в DataReader.Я увеличил время ожидания до некоторого управляемого числа.

Есть ли что-то вроде SQLBulkCopy для выбора записей в пакетном пакете?

Спасибо!Bala

Ответы [ 2 ]

4 голосов
/ 18 февраля 2011

Похоже, что вы должны делать всю свою обработку внутри сервера SQL. Или разбить данные на куски.

0 голосов
/ 18 февраля 2011

Цитата из этой страницы MSDN :

Примечание

Не существует специальных методов оптимизации для операций массового экспорта.Эти операции просто выбирают данные из исходной таблицы с помощью инструкции SELECT.

Однако на той же странице упоминается, что bcp utlity может «массово экспортировать» данные из SQL Server вfile.

Я предлагаю вам попробовать запрос с помощью bcp и посмотреть, значительно ли он быстрее.Если это не так, я бы сдался и попытался поиграться с размерами ваших партий или усердно смотреть на перенос обработки в SQL Server.

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