Какой запрос быстрее: одно обновление с несколькими наборами или несколько обновлений с одним набором?

0

Предположим, у вас есть TestTable со столбцами: field1, field2,... fieldn.

Какой запрос выполняется быстрее:

UPDATE TestTable set field1 = n1;


UPDATE TestTable set field2 = n2;

...

UPDATE TestTable set fieldn = nn;

или же

UPDATE TestTable set 

field1 = n1,

field2 = n2,

....

fieldn = nn;
  • 0
    Обычно один оператор, вы обновляете всю таблицу, так что один точно определенно выигрывает.
  • 2
    Без WHERE вся таблица должна быть отсканирована. В первой версии это нужно сделать n раз. Во втором один раз. Так что второй должен работать лучше.
Показать ещё 3 комментария

2 ответа

0

Хороший вопрос. Попробуйте думать об этом так.

Каждая операция установки занимает незначительное время
за каждое ОБНОВЛЕНИЕ = n проверок

ОБНОВЛЕНИЕ n1 = n
ОБНОВЛЕНИЕ n2 = n
ОБНОВЛЕНИЕ n3 = n

Таким образом, по сути, для n количества обновлений вы проверяете n строк n раз, поэтому вы просматриваете n ^ 2 полных проверок. Однако, если вы используете функцию SINGLE UPDATE, вы проверяете только n строк ОДИН раз.

Поэтому второй вариант значительно лучше.

  • 0
    Помимо количества операций, не забывайте о задержке между сервером приложений и сервером базы данных! Миллисекунды складываются.
  • 1
    Вы совершенно правы! Я в основном смотрел на это с высокого уровня, чтобы не стать слишком технически тяжелым на OP :)
0

SQL основан на множестве. Каждый раз, когда вы можете работать с набором данных в одной операции, вам обычно лучше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню