У меня есть исходная таблица с 3 миллионами строк в sql-сервере. Первичный ключ - это встроенный sql uniqueidentifier.Sql сервер, как вставлять миллионы строк
Я хочу, чтобы скопировать все 3 миллиона строк в 4 таблицы:
Table1
имеет некоторую основную информацию, такую как uniqueidentifier
, book_title
, book_author
, book_price
. Table2
, Table3
и Table4
будут иметь все разные столбцы, но они будут иметь тот же первичный ключ uniqueidentifier
, что и Table1
, а также что первичный ключ будет внешним ключом для первичного ключа Table.
Копирование из source_table
занимает много времени, потому что каждый из Table1
, Table2
, Table3
и Table4
имеет 50 миллионов строк. Это медленно, и я хочу улучшить производительность. Мой код ниже. У кого-нибудь есть мысли, чтобы улучшить производительность даже немного? Каждый день source_table заполняется, и я должен повторно вставить в Table1
, Table2
, Table3
и Table4
.
Thx для ваших предложений.
insert into Table1 values (UID, book_title, book_author, book_price)
select values (@UID, @title, @author, @price)
from source_table
insert into Table2 values (UID, col2, col3, col4)
select values (@UID, @col2value, @col3value, @col4value)
from source_table
insert into Table3 values (UID, col2, col3, col4)
select values (@UID, @col2value, @col3value, @col4value)
from source_table
Почему вы должны сделать 4 копии 50 миллионов строк каждый день? В качестве побочного примечания, если у вас есть уникальный идентификатор в качестве основного ключа, я надеюсь, что у вас есть кластерный индекс на что-то еще, поскольку фрагментация достигнет почти 100% всего за пару тысяч строк. –
Возможный дубликат [копирование огромных данных таблицы в другую таблицу на сервере sql] (http://stackoverflow.com/questions/5296106/copying-a-huge-table-data-into-another-table-in-sql- сервер) –
Также, на DBA Stack, посмотрите, поможет ли это вам Джеймс: http://dba.stackexchange.com/questions/99367/insert-into-table-select-from-table-vs-bulk-insert – Seamus