@AlikDex

Почему более сложный запрос работает быстрее?

В общем 2 таблицы. Нужно с 1 таблицы синхронизировать даты во вторую. Причем во второй записей гораздо больше чем в первой.

Решение в лоб:
UPDATE `videos_stats` SET `published_at`=(SELECT `published_at` FROM `videos` WHERE `videos`.`video_id`=`videos_stats`.`video_id`)

(Запрос занял 0.0431 сек.)
И это лобовое решение работает медленнее чем второе:
UPDATE `videos_stats` as `vs`
    LEFT JOIN (
        SELECT `video_id`, `published_at` FROM `videos`
    ) as `v`
    ON `v`.`video_id`=`vs`.`video_id`
SET `vs`.`published_at`=`v`.`published_at`

(Запрос занял 0.0281 сек.)
Собстна почему так? На пальцах если можно.
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
@D3lphi
Потому что в первом случае, вы, фактически выполняете 2 запроса. При чем, данные из вложенного select'а сначала выгружаются в оперативную память, а уже потом подставляются, как новое значение для `published_at`. А во втором все делаете одним. JOIN сам по себе достаточно быстрый оператор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы