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
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
И что тут оптимизировать?
 

Adelf

Administrator
Команда форума
И что тут оптимизировать?
представь, он еще пожаловался на это сообщение :)

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

ArtmirArt

Новичок
представь, он еще пожаловался на это сообщение :)

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

Adelf

Administrator
Команда форума
если поставить EXPLAIN перед этим запросом и выполнить, то mysql сама подскажет что не так с этим запросом. но это тоже надо научиться читать.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вот она, современная молодежь... Еще зайти не успел, уже накляузил.

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

ArtmirArt

Новичок
Вот она, современная молодежь... Еще зайти не успел, уже накляузил.

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Секунда на запрос - это не много, но зависит от того, что он делает и где. Так же интересно что именно у тебя там "тормозит". Как сказал @Adelf смотри EXPLAIN запроса, что и как там выполняется.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну он выполняется в среднем 1063 мс, это много
какие нефункциональные требования? по каким критериям дана оценка "много"?

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

scorpion-ds

Новичок
ну он выполняется в среднем 1063 мс, это много
Это еще зависит на каком калькуляторе запускать.

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

ArtmirArt

Новичок
Это еще зависит на каком калькуляторе запускать.

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

Фанат

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

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

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

ArtmirArt

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

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

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

Вложения

Сверху