![]() |
команда update: обновление больших объемов
Всем привет.
Есть несколько огромных таблиц (кол-во строк от 150 000) они связаны по полю типа int, некоторые по полю типа varchar Нужна информация о правильном написании запросов с командой update Как лучше апдейтить таблицы; связанные тыблицы; просто таблицы с уловиями where и т.д. Последнее время появлялись множественные ошибки блокировок, зависание системы и прочее. Хотелось бы более грамотно писать коды. Можно ссылки на поучительную информацию... |
Поясню на примере
Задача: обновить всех мужчин в таблице продавцов (Sales) Код:
update Sales Код:
--временная таблица Код:
--обновляем таблицу через комбинацию join |
rivera,
А в чем собственно проблема? Посмотрите результат выполнения для каждого приведенного случая через execution plan |
для каждой таблицы каждый раз он будет разным, в зависимости от размера раблицы и индексов на нее.
мне же инетересна именно методика написания, которая будет универсальна для большинства таблиц. ну типа, подзапросы всегда работаю быстрее и менее затратны чем join или по кластерному индексу всегда быстрей update происходит, нежели по подзапросу с выборкой произволному полю и т.д. |
Цитата:
В идеале всегда надо обновлять поля, используя ключевые поля (PK и FK), тогда и результат будет почти мгновенным. Если же необходимо сделать, как в примере, то лучше писать не LIKE, а что то типа Код:
where lower(Right(LastName, 2)) ='ов'. |
Время: 10:00. |
Время: 10:00.
© OSzone.net 2001-