Chukcha, спасибо - 0,6 сек. Почти в 2 раза быстрее - это предел?
count_do это и есть счетчик сотрудников в таблице x55_cl_items - он обновляется по крону раз в 10 минут (да там часто все меняется). Но запрос тяжеловат, я хочу попытаться сделать его побыстрее.
Додумался до того что не нужно апать всю таблицу x55_cl_items нужно апнуть только фирмы где есть сотрудники.
Пока у меня в голове родилась такая каша :))
Получаем список ID фирм в которых есть работники
1. SELECT `cl_id` FROM `x55_do_working` GROUP BY `cl_id` HAVING COUNT(*)=1
Делаем подсчет сколько работников в каждой фирме
2. SELECT COUNT(id) FROM `x55_do_working` WHERE `cl_id` = каждая из записей запроса №1
Апаем только те клиники где есть работники, а не все
3. UPDATE x55_cl_items SET count_do = ЗАПРОС №2 WHERE `id` = ЗАПРОС №1
Как все это собрать в 1 запрос?
c count(id) - 0.9 сек
с count(*) - 1,03 сек---------- Добавлено 21.09.2017 в 10:14 ----------Я тут понял как ускорить запрос - не нужно апать всю таблицу x55_cl_items
Нужно апать только те x55_cl_items.id которые равны x55_do_working.cl_id
т.е. как-то так (жирным добавил
---------- Добавлено 21.09.2017 в 10:19 ----------
Вопрос снят - сам допер как ускорить - WHERE t1.userid > 0
Вроде как для PHP 7 нужен не Memcache, а Memcached
https://habrahabr.ru/company/avito/blog/338140/
LEOnidUKG правильно советует обновить мускуль, очевидно же что это ваше самое слабое место, а вы оптимизируете все кроме него :)))
Сделал не помогло, да и не понятно как составные индексы на другие поля погли влиять на выборку по нужным полям.
Сори не понял - что и как сделать?
Удаление составных индексов и добавление отдельных на эти поля не изменили эксплейн
А вот с этим запросом такой фокус не прошел почему-то
на фото индексы таблицы xfd3_clinics_items. Я пробовал добавлять индексы на поля section_id и object_id - это не изменило эксплейн