Mysql Оптимизировать MySQL запрос?

ArtmirArt

Новичок
Здравствуйте. Как можно оптимизировать такой MySQL-запрос?

SELECT U.id,U.name,U.birthday,U.sex,U.city,U.status,U.regdate
FROM users U
LEFT JOIN shipping SA ON SA.user_id=U.id
LEFT JOIN activity A ON A.user_id=U.id
LEFT JOIN blocked B ON B.user_id=U.id
LEFT JOIN deleted D ON D.user_id=U.id
WHERE SA.id and A.last_activity_at > 1553260577 and B.id is NULL and D.id is NULL and
U.id NOT IN (
( SELECT who_id FROM blacklist WHERE user_id=17 )
UNION
( SELECT user_id FROM blacklist WHERE who_id=17 )
UNION
( SELECT 17 )
)
GROUP BY U.id ORDER BY U.id DESC LIMIT 1 OFFSET 3
 
И что тут оптимизировать?
 
И что тут оптимизировать?
представь, он еще пожаловался на это сообщение :)

Автор, мы не знаем тормозит ли он, какие индексы есть, и т.д. Мы тут маги-экстрасенсы чтоли тебе? по фотографии гадать?
 
представь, он еще пожаловался на это сообщение :)

Автор, мы не знаем тормозит ли он, какие индексы есть, и т.д. Мы тут маги-экстрасенсы чтоли тебе? по фотографии гадать?
тогда скажите что вам еще нужно. Мб вам структура таблиц нужна, я же не экстрасенс, чтобы гадать, что вам нужно
 
если поставить EXPLAIN перед этим запросом и выполнить, то mysql сама подскажет что не так с этим запросом. но это тоже надо научиться читать.
 
Вот она, современная молодежь... Еще зайти не успел, уже накляузил.

Спрошу ван мор тайм, почему решил, что его надо оптимизировать. Какова первопричина? Он тормозит, он некрасиво выглядит, он непонятный или что?
 
Вот она, современная молодежь... Еще зайти не успел, уже накляузил.

Спрошу ван мор тайм, почему решил, что его надо оптимизировать. Какова первопричина? Он тормозит, он некрасиво выглядит, он непонятный или что?
ну он выполняется в среднем 1063 мс, это много
 
Секунда на запрос - это не много, но зависит от того, что он делает и где. Так же интересно что именно у тебя там "тормозит". Как сказал @Adelf смотри EXPLAIN запроса, что и как там выполняется.
 
ну он выполняется в среднем 1063 мс, это много
какие нефункциональные требования? по каким критериям дана оценка "много"?

твой вопрос аналогичен такому:
"вот автомобиль, он едет слишком медленно, как можно его ускорить?"
- а может быть, это Швеция, и он едет 70 потому что быстрее запрещено
 
Последнее редактирование:
ну он выполняется в среднем 1063 мс, это много
Это еще зависит на каком калькуляторе запускать.

Если в БД много записей, то лучше забыть об OFFSET (свыше 5-7 лямов), недавно столкнулся с такой проблемой, только там выполнение занимало минуты ...
 
Это еще зависит на каком калькуляторе запускать.

Если в БД много записей, то лучше забыть об OFFSET (свыше 5-7 лямов), недавно столкнулся с такой проблемой, только там выполнение занимало минуты ...
Чем тогда можно заменить OFFSET? Мне необходимо поочереди выводить всех пользователей по одному из БД
 
Чем тогда можно заменить OFFSET? Мне необходимо поочереди выводить всех пользователей по одному из БД
у тебя "5-7 лямов"? И ты собрался выводить их по одному?
Если нет, то не парься.

И вообще, при чем здесь оффсет? Сюда набежал левый чувак, квакнул не в тему, и ты уже все - забыл про свой запрос, про оптимизацию, и начал в страхе бегать вокруг, что делать с оффсетом.
Ничего не делать. Занимайся своим запросом.

EXPLAIN сделал. как тебе еще неделю назад говорили?
 
у тебя "5-7 лямов"? И ты собрался выводить их по одному?
Если нет, то не парься.

И вообще, при чем здесь оффсет? Сюда набежал левый чувак, квакнул не в тему, и ты уже все - забыл про свой запрос, про оптимизацию, и начал в страхе бегать вокруг, что делать с оффсетом.
Ничего не делать. Занимайся своим запросом.

EXPLAIN сделал. как тебе еще неделю назад говорили?

Сделал
 

Вложения

  • Screenshot_2019-05-04 localhost localhost imgift fdy82_users phpMyAdmin 4 8 5.png
    Screenshot_2019-05-04 localhost localhost imgift fdy82_users phpMyAdmin 4 8 5.png
    40,9 KB · Просмотры: 17
Сверху