Какой самый быстрый способ вставить данные из одной таблицы в другую? (SQL Server 2005) - PullRequest
4 голосов
/ 05 июня 2009

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

Мой текущий подход очевиден: INSERT / SELECT:

set identity_insert TargetDBName.dbo.TableName on

insert into TargetDBName.dbo.TableName ([FieldsList])
  select [FieldsList] from  TargetDBName.dbo.TableName    

set identity_insert SourceDBName.dbo.TableName off

Это занимает примерно вечность (1 час для 10 миллионов записей, в то время как из таблицы с индексами к индексу без индекса ушло 20 минут).

Какой лучший способ сделать это?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 05 июня 2009

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

----Disable Index
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* DISABLE
GO
----Enable Index
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* REBUILD
GO
1 голос
/ 05 июня 2009

Проверьте это в StackOverflow

Это должно помочь вам вставить данные в порции по 1000. Мне также нравится «отключение идеи индекса»

...