Вставка большого объема данных в таблицу SQL Server 2005 - PullRequest
0 голосов
/ 20 декабря 2011

Я вставляю около 2 миллионов записей в таблицу SQL Server 2005.В настоящее время таблица имеет кластеризованные и некластеризованные индексы.Я хочу улучшить производительность запроса вставки в этой таблице.Может ли кто-нибудь иметь представление о

Ответы [ 5 ]

2 голосов
/ 20 декабря 2011
  1. Удалите все индексы (включая первичные, если ваши данные для вставки не заказывается с тем же ключом)
  2. Вставить данные
  3. воссоздать все пропущенные индексы
1 голос
/ 20 декабря 2011

Если нет веской причины, по которой вы не используете массовую вставку, я бы сказал, что лучше всего это сделать. Т.е.: выберите строки в формате, который вы можете затем повторно вставить.

Выполняя обычные операции вставки в этой сумме, вы сильно загружаете журналы транзакций.

Если массовая вставка не является опцией, вы можете выиграть немного, разделив вставки на куски - так, чтобы вы не переходили построчно, но не пытались вставлять и обновлять все это одним махом либо.

Я сам немного поэкспериментировал с этим, но у меня не было времени, чтобы приблизиться к окончательному ответу. (Я начал задавать вопрос Производительность для RBAR по сравнению с обработкой на основе множеств с различными размерами транзакций по той же причине.)

1 голос
/ 20 декабря 2011

Вы можете попытаться отключить индексы в таблице, прежде чем вставлять и включать их снова после. Это может значительно сэкономить время, если вы вставляете большие объемы данных в таблицу.

Прочтите эту статью для SQL-сервера о том, как это сделать: http://msdn.microsoft.com/en-us/library/ms177406.aspx

0 голосов
/ 22 декабря 2011

Вы должны удалить индексы и затем вставить данные, а затем воссоздать индексы.

0 голосов
/ 20 декабря 2011

Вы можете вставить до 1000 строк в одну вставку.

values (a,b,c), (d,f,h)

Сортировка данных по первичному ключу на вкладыше.

Использовать с (удерживать блокировку)

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