
Frank
03.09.2018
17:38:59
Проблемка в GROUP BY

Al
03.09.2018
17:38:59
А то страшно представить что будет происходить когда база разрастется

Frank
03.09.2018
17:39:32
как только добавляем аггрегацию - попадаем на using temporary & join buffer.

lost
03.09.2018
17:39:57
чёт запросики у тебя так себе

Google

Al
03.09.2018
17:40:12

Frank
03.09.2018
17:40:20
И-мен-но :)
Собственно почему и спрашиваю
Как бы желаемое что один запрос что другой выдаёт

Al
03.09.2018
17:41:24

Frank
03.09.2018
17:42:29
Ну вот не даёт моё чувство прекрасного) Я же понимаю что это неэффективно. С подзапросиками я понемногу сужаю выборки и в итоге последние группировки делаю уже по результатам селекта. Там план выглядит получше, но опять таки группировка меня не радует

lost
03.09.2018
17:43:13
я бы на твоем месте не был так уверен что твой сабквери работает
ты видешь где-нибудь в эксплейне derived table ?
если нет derived table - значит запрос был оптимизирован с помощью derived_merge, а это в большинстве случаев говно-оптимизация

Frank
03.09.2018
17:45:00
Таки не вижу

lost
03.09.2018
17:45:10
ну вот...

Al
03.09.2018
17:45:41

Frank
03.09.2018
17:45:43

Google

Frank
03.09.2018
17:46:12

Al
03.09.2018
17:46:43

Захар
03.09.2018
17:47:45
а лучше машку за ляшку

Frank
03.09.2018
17:48:07
Ну нет) Я как бы не новичок, просто в данном случае есть готовая структура данных и стоит задача погонять по ней выборки - наивная реализация в эксплейне выглядит очень сурово, поэтому я ищу методы оптимизации. Правка структуры - возможна, но хочется сначала выжать максимум без неё.
Хы))
Вот сейчас это писал и дошло. Немного поправил индекс для более полного использования. И таки получил желаемое
Причем в наивной же реализации

lost
03.09.2018
17:51:45
все равно шляпа
type = index читай как фуллскан

Frank
03.09.2018
17:52:34
Фуллскан индекса, который вероятно валяется в индекс-буфере - это лучше чем фуллскан таблицы

lost
03.09.2018
17:52:45
это на чуть-чуть лучше чем all но все равно шляпа

Frank
03.09.2018
17:53:33
Тоже правда, помнится некоторые индексы весят сравнимо с данными

lost
03.09.2018
17:54:24

Frank
03.09.2018
17:55:14
Ну вычислимые поля, да - но я таки не зря birthdate поставил последним

lost
03.09.2018
17:55:45
так именно он у тебя и не будет использоваться :)

Tony
03.09.2018
17:58:33
Я делаю выборку и сортирую, например, по уровню (level). Можно ли узнать, на каком месте стоит юзер с айди, например, 5?
Постгря

Al
03.09.2018
17:59:39
Маразм крепчает

lost
03.09.2018
18:00:21
@Frank_Einstein
вообще, если уж по делу говорить - запрос у тебя должен быть быть вот такой:
SELECT
a.id as a_id, SUM(l.amount), COUNT(*)
FROM account a
JOIN loan l ON l.account_id = a.id
WHERE
a.sex = 2 AND
a.birthday BETWEEN UNIX_TIMESTAMP(NOW - INTERVAL 30 YEAR) AND UNIX_TIMESTAMP(NOW - INTERVAL 20 YEAR)
GROUP BY 1 ORDER BY NULL
и уже потом ты навешиваешь все необходимые тебе поля по фамилиям и прочим данным, чем меньше объем данных ты группируешь и сортируешь и вообще держишь во внутренней временной таблице во время запроса - тем лучше

Google

Ilia
03.09.2018
18:01:27

Frank
03.09.2018
18:01:54
Я кстати немного поизвращался с force index, но такое себе)

lost
03.09.2018
18:01:54

Frank
03.09.2018
18:02:23


lost
03.09.2018
18:05:53
ну потому что не нужно использовать тулзу для эксплейна, в которой ты все ручки покрутить не можешь...

Frank
03.09.2018
18:06:10
Увы, обычный db-fiddle

lost
03.09.2018
18:06:27
вся вот эта вот дичь с вебмордой делается в докере за 5 минут с перекуром

Ilia
03.09.2018
18:06:54

Admin
ERROR: S client not available

Frank
03.09.2018
18:07:53
И все варианты решения, тот который раскомментирован - lost soul, два остальных мои.

Frank
03.09.2018
18:10:17
Собсна у первых двух план в целом одинаковый - у третьего почудовищнее

lost
03.09.2018
18:12:13
я имел ввиду что сама эта вебморда предоставляет не полный функционал
версия мускуля 5.7, explain format = json не сделать, почему? а хрен его знает почему...
норм тулза, пацаны
взял и сервер (не дай бог) отправил погулять

Frank
03.09.2018
18:16:17
Дык докер-песочница тоже поди

Google

lost
03.09.2018
18:16:27
возможно

Frank
03.09.2018
18:17:01
Если нет - зря :)
Ну кстати))
Format=json я таки сделал там
v 5.6 правда только

lost
03.09.2018
18:19:37
все-таки да, контейнер

Frank
03.09.2018
18:19:50
везёт им

lost
03.09.2018
18:20:46
ты сегодня немногословен

Tony
03.09.2018
19:18:13

Al
03.09.2018
19:22:30
может кто помочь?
мы же уже обсуждали раз.
помощь это когда ты делаешь и тебе помогают исправить ошибки
а ты хочешь что бы за тебя сделали, и это уже РАБОТА, за нее в кассу :)

Tony
03.09.2018
19:23:22

Al
03.09.2018
19:23:40