Попробовал выполнить эксплейн части запроса
В итоге -
rows - 149941 Using index condition
Если я правильно понимаю. Запрос виснет потому что кол-во фирм умножаются на 149941
в результате запрос пытается перебрать 3 млрд.!!! строк? Я все верно понял?---------- Добавлено 29.01.2018 в 13:44 ----------Можно по другому:
1. Найти все фирмы, у которых поле created младше чем самый старый коммент,
например created = 2015-07-10 16:20:00
а самый старый коммент для фирмы с created = 2013-07-10 16:20:00
2. Обновить created у этих фирм сделав его на месяц старше самого старого коммента
Эти таблицы проиндексированы в доль и поперек ибо они самые ходовые на сайте. На всех полях индексы есть.
Эксплейн показывает что на скрине.
P.S. я попробовал добавить условие
решил обновлять по категориям. Эксплейн тут же показал сокращение графы DEPENDENT SUBQUERY с 300K до 4 !!!! Но все равно запрос виснет
перепроверил все, да была ошибка, все поправил в итоге запрос
как завис на минуту с чем то так и вывалился с ошибокой 504 по тайтауту.
Решил я проверить на одной фирме добавив в запрос
все равно запрос завис и ничем не закончился
P.S. таблица комментов большая (более 300k записей), но почему даже по одной фирме запрос не отработал
Синтаксис неправильный, мускуль ругается
Вероятно нужно как то назначить таблицы по типу
база.firm AS t2 и т.п. , пробую найти примеры...
Не вижу в вашем варианте "минус месяц" от даты коммента при обновлении поля крейтед у фирмы
update firm set created = DATE_SUB((select min(comments.created) from comments where firm.Id = object_id group by object_id), INTERVAL 1 MONTH);
А если нет - как добавить условие чтобы затронуло только тех у кого есть комменты?
Если если комментов нет - запись просто не обработает? (что меня тоже устраивает)
100% получится, но у меня знаний не хватает все это соединить в запрос.
Вы зачем то делаете
когда задача - Задача - обновить created у фирм
Все же прошу знающий мускуль подсказать решение в виде запроса...
Мне кажется можно проще как-то - одним запросом с объединением таблиц.
Вероятно в этом...
Вообще не понятно как можно написать самому сайт и не знать основ про Mysql