|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - команда update: обновление больших объемов |
|
MSFT SQL Server - команда update: обновление больших объемов
|
Ветеран Сообщения: 661 |
Всем привет.
Есть несколько огромных таблиц (кол-во строк от 150 000) они связаны по полю типа int, некоторые по полю типа varchar Нужна информация о правильном написании запросов с командой update Как лучше апдейтить таблицы; связанные тыблицы; просто таблицы с уловиями where и т.д. Последнее время появлялись множественные ошибки блокировок, зависание системы и прочее. Хотелось бы более грамотно писать коды. Можно ссылки на поучительную информацию... |
|
------- Отправлено: 15:14, 09-02-2010 |
Ветеран Сообщения: 661
|
Профиль | Отправить PM | Цитировать Поясню на примере
Задача: обновить всех мужчин в таблице продавцов (Sales) Будет ли запрос выполняться быстрей при такой схеме --временная таблица declare @Rows table (id int) --выбираем все строки по ключевому полю записи которые будем обновлять: --id первичный ключ, кластерный индекс в таблице Sales insert into @Rows (id) select id from Sales where LastName like '%ов' --и теперь обновляем все записи, подставляя подзапрос update Sales set Set Gender = 'M' where id in (select id from @Rows) |
------- Отправлено: 15:30, 09-02-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать rivera,
А в чем собственно проблема? Посмотрите результат выполнения для каждого приведенного случая через execution plan |
Отправлено: 17:14, 09-02-2010 | #3 |
Ветеран Сообщения: 661
|
Профиль | Отправить PM | Цитировать для каждой таблицы каждый раз он будет разным, в зависимости от размера раблицы и индексов на нее.
мне же инетересна именно методика написания, которая будет универсальна для большинства таблиц. ну типа, подзапросы всегда работаю быстрее и менее затратны чем join или по кластерному индексу всегда быстрей update происходит, нежели по подзапросу с выборкой произволному полю и т.д. |
------- Отправлено: 18:01, 09-02-2010 | #4 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата rivera:
В идеале всегда надо обновлять поля, используя ключевые поля (PK и FK), тогда и результат будет почти мгновенным. Если же необходимо сделать, как в примере, то лучше писать не LIKE, а что то типа Проверьте все варианты на одной и той же таблице и сравните планы выполнения. Результат будет виден сразу. |
||
------- Отправлено: 01:56, 10-02-2010 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - Обновление Windows Vista HP SP1 до SP2 из Windows Update | SAOPP | Microsoft Windows Vista | 52 | 24-02-2010 13:04 | |
Установка - [решено] После установки SP3 не работает Windows Update и автоматическое обновление | Excaliburg | Microsoft Windows 2000/XP | 11 | 09-10-2008 20:50 | |
Стабильность работы so-dimm разных объемов и производителей | Igor Urievich | Материнские платы и память | 2 | 23-07-2008 11:42 | |
Разное - Копирование больших объемов в Vista Ult 32 | Awes | Microsoft Windows Vista | 5 | 21-08-2007 19:02 | |
Обработка больших объемов информации | ProcInf | Программирование и базы данных | 2 | 11-06-2007 13:10 |
|