Каждый оператор, который вы отправляете в СУБД, должен быть проанализирован.Таким образом, вы отправляете СУБД свой SQL, и СУБД говорит: «А, обновление. Какая таблица? Таблица latency_. Какие строки? Идентификатор строки 1. Давайте подумаем, как быстро туда добраться ... У меня есть индекс? Да, такдля одной строки имеет смысл использовать его. Какие столбцы обновлять и с какими значениями? Столбец is_active и null. Хорошо. Давайте сделаем это. "
Для отдельных операторов вы делаете это примерно 500 раз.Для второго только один раз.
Затем вы запускаете оператор из где-то .Так что где-то нужно поговорить с СУБД: «Привет, у меня есть для вас заявление».- «Спасибо, я только что проверил. Выглядит хорошо».- Хорошо, тогда, пожалуйста, выполни это.- "Готово. Ваше обновление затронуло 500 строк."Это происходит для любого приложения, даже если это какой-то инструмент БД, такой как phpmyadmin.Это называется поездками туда и обратно.Этот разговор происходит для каждого отправляемого вами оператора.
Наконец, с одним оператором вы не даете СУБД никакой возможности для оптимизации.Допустим, вы обновляете 500 строк из 600. Это почти все строки.Если вы отправите одно обновление, СУБД будет искать эту запись.Если есть индекс, он быстро найдет его с помощью бинарного поиска (Посмотрите на строку № 300. Меньше? Посмотрите на строку 150. Больше? Посмотрите на строку 225 ...) В противном случае он должен прочитать всю таблицу.Для каждого утверждения.500 раз.Если вы отправите только один оператор на 500 строк, СУБД наверняка заметит, что будет непросто пробежаться по индексу для каждого идентификатора правила, и вместо этого просто прочитает таблицу последовательно один раз и будет готово.
ВозможноСУБД может даже выполнить ваш оператор распараллеленным.Четыре ядра процессора?Тогда каждое ядро ЦП может заботиться о 150 записях одновременно.
Итак: множество причин сделать это в одном операторе обновления.И это то, что SQL в конце концов.Не беспокойтесь о том, как СУБД может решить проблему.Скажите ему, что делать (обновить эти 500 строк), а не как (один за другим).Он может даже решить выполнить 500 строк так, как если бы вы отправили 500 отдельных операторов, и все равно это было бы намного быстрее, потому что синтаксический анализ выполнялся только один раз и выполнялся намного реже.