2015-09-10 5 views
0

У меня есть тысячи операторов SQL-запросов, которые должны выполняться на большой таблице. Операции обновления занимают несколько минут, и я должен использовать их более эффективным образом, если это возможно, чтобы ускорить его.Несколько операторов SQL Update

Какие существуют варианты для ускорения этих обновлений?

Запуск на SQL Server 2008 R2

Один такой запрос:

UPDATE myTable 
SET Col1 = 'abc', Col2 = 123, Col3 = '2015-01-01 00:00:00.000' 
WHERE ID = 123456 
+0

Первый вариант - показать нам некоторые структуры и пример запроса – lad2025

+3

Покажите нам один из этих операторов UPDATE. – jarlh

+0

UPDATE myTable SET Col1 = 'abc', Col2 = 123, Col3 = '2015-01-01 00: 00: 00.000' WHERE ID = 123456. Идентификационный столбец является Первичным ключом. Столбцы имеют разные типы (можно предположить, что они являются одинаковыми именами столбцов, но разными значениями для всех запросов). – user1365247

ответ

0

СУБД системы оптимизированы для массовых операций, а не обновление строк по одному, как это.

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

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

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

Смежные вопросы