ProfiPHPProfiPHP
  1. Главная
  2. Полезное в PHP
  3. Объединения SELECT и UPDATE в MySQL

Объединения SELECT и UPDATE в MySQL

Попробуем разобраться с вопросом выполнения объединения SELECT и UPDATE в MySQL.

Вначале прямо напишу, программисты, которые думают, что выполнение одного большого запроса аналогично несколько маленьким — ошибаются. Сейчас мы это доведем.

Пример:
SELECT COUNT(*) as `select1` FROM `table` WHERE `category` = '1'
SELECT COUNT(*) as `select2` FROM `table` WHERE `category` = '2'
UPDATE `table` SET `value1` = 'select1', `value2` = 'select2' WHERE `user_id` = 1
В данном примере мы выполняем поочередно две операции поиска количества строк, которые совпадают со значением категории 1 и 2. Далее мы обновляем поля в таблице, значениями которых будут найденные количества строк. Результат выполнения с экспериментальными 10000 строк равен 0.063 сек.

Теперь объединим все в один запрос:
UPDATE `table` SET
`value1` = ( SELECT COUNT(*) FROM `table` WHERE `category` = '1' ),
`value2` = ( SELECT COUNT(*) FROM `table` WHERE `category` = '2' )
WHERE `user_id` = 1
В данном примере мы выполняем два SELECT COUNT в одном запросе. При объединении запросов время выполнения почти в 2 раза быстрее - (0.036 сек.)

Данное правило работает со всеми запросами: необходимо оптимизировать и уменьшать в разумных целях количество всех запросов к базе данных, чтобы сэкономить кучу времени на их отправку и разбор.

Комментарии

Кент
Спасибо, то что искал)

Добавить комментарий

Имя:
Текст комментария: