2015-04-23 3 views
0

Следующий код выполняет очень плохо, когда есть только десятки миллионов записей, присутствующих в представлении:Каков самый быстрый способ выполнить инструкцию INSERT INTO SELECT FROM?

INSERT INTO dbo.SomeTable 
SELECT Field1, Field2, Field3 
FROM dbo.SomeView 

Как код может быть изменен так, чтобы вставить много данных работает быстрее (без учета производительности вид)? IE: Есть ли какие-нибудь подсказки, которые я мог бы использовать, например, NOLOCK? Должен ли я выполнять какую-либо другую работу до выполнения этой команды?

+1

Это Вставка или выбор, требующий времени? – Magnus

+0

Вставка. Я обновил вопрос. –

+0

Я использовал разные языки SQL, но никогда не видел таких вставок. Это всегда что-то вроде «Вставить в значения tblname (column1, column2, ...)» (val1, val2, ...) ». См. Например http://www.w3schools.com/sql/sql_insert.asp или https://technet.microsoft.com/en-us/library/dd776381%28v=sql.105%29.aspx#BasicSyntax –

ответ

0

Вы могли бы показать нам копию плана выполнения, однако в отсутствие того, что вы можете рассмотреть любое из следующих действий:

  • Не могли бы вы включать в себя где положение, чтобы ограничить выбор?
  • Есть ли другие запросы, выполняющиеся в фоновом режиме, которые могут вызвать некоторую блокировку?
  • Есть ли указатель на таблице выигрыша, которую вы могли бы удалить до добавления всех записей, а затем добавить обратно. Таким образом, вы не записываете запись и индекс одновременно.
Смежные вопросы