оптимизация команды t sql - PullRequest
0 голосов
/ 18 марта 2020

В моей таблице миллион строк. Если поле RunId = 37 для записей 100K, то какая из этих двух записей быстрее

update _PECO_Detail set RunId = 37 where Runid <> 37
update _PECO_Detail set RunId = 37 

Если для 900K записей уже есть RunId 37, тогда первая команда будет быстрее

update _PECO_Detail set RunId = 37 where Runid <> 37
update _PECO_Detail set RunId = 37 

Индекс существует в поле RunId

1 Ответ

2 голосов
/ 18 марта 2020

Первый быстрее, потому что он обновляет только строки, которые не 37 - это 900 000 строк по вашему описанию, но это лучше, чем 1 000 000. Если таких строк нет, производительность этих двух систем будет примерно одинаковой.

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

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