Массовое обновление огромной таблицы - PullRequest
2 голосов
/ 24 мая 2011

У меня есть таблица из 26 столбцов с несколькими тысячами записей.Есть ли способ массового обновления этой таблицы?

Сейчас я просто делаю стандартное обновление для каждого столбца, который требует обновления.Например,

update mytbl
set col1 = replace(....)

update mytbl
set col1 = col1 + "xyz"

update mytbl
set col2 = "test..."

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

Спасибо

Ответы [ 4 ]

1 голос
/ 24 мая 2011

1 - пара тысяч записей x 26 полей невелики:)

2 - либо используйте предложенный ck синтаксис для обновления нескольких полей, либо вставьте его в новую таблицу, которая может быть быстрее:

SELECT (REPLACE(col1...)) as Col1,
       'Some Value' as Col2,
       ...
INTO MyNewTable
FROM MyOldTable
1 голос
/ 24 мая 2011

Вы можете использовать эту структуру:

UPDATE myTable
SET col1 = REPLACE(col1.....),
    col2 = 'some value'
0 голосов
/ 24 мая 2011

Пожалуйста, позаботьтесь о следующих пунктах.

  1. Вы можете использовать SQL Profiler для проверки того, что какой-либо триггер что-то делает в процессе обновления.

  2. Вы можете отключить индексы. Запустите тест сейчас и, наконец, восстановите его.

0 голосов
/ 24 мая 2011

Эти советы более полезны для гораздо большего количества записей, но в любом случае могут помочь: 1. Используйте обновление мультиполя, как предложено ck

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

  2. Отключить все индексы. Восстановите их после завершения обновления.

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