Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GROUP BY и Order by SUM / 7 сообщений из 7, страница 1 из 1
31.03.2014, 18:04:37
    #38601230
spavlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
Всем привет.

Есть такой казалось бы простой запрос:
Код: sql
1.
SELECT `obj_id`, SUM(`counter`) as cnt FROM `statistic_daily` WHERE GROUP BY `obj_id` ORDER BY `cnt` DESC LIMIT 5;


И чтобы я ни делал, как бы ни крутил индексы результат один - "using temporary, using filesort".

Нашел в доке по mysql ( http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html ), что если условия ORDER и GROUP не равны, то стоит забыть об индексах: In some cases, MySQL cannot use indexes ... You have different ORDER BY and GROUP BY expressions.
Удавалось даже достичь успеха, типа "using indexes,using temporary, using filesort", но от "using temporary, using filesort" никак не избавиться. У меня есть подозрение, что это не реально. Я прав или нет? Гуру, это уже спортивный интерес - победить оптимизатор.

Заранее спасибо.
...
Рейтинг: 0 / 0
31.03.2014, 18:08:11
    #38601233
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
Имхо, ничего тут не победить.
Разве что в качестве покрывающего сделать индекс (`obj_id`, `counter`), но от "using temporary, using filesort" это не избавит.
...
Рейтинг: 0 / 0
31.03.2014, 18:16:59
    #38601238
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
spavlov
Код: sql
1.
SELECT `obj_id`, SUM(`counter`) as cnt FROM `statistic_daily` WHERE GROUP BY `obj_id` ORDER BY `cnt` DESC LIMIT 5;




ошибка, после вере - сразу груп бай ?
...
Рейтинг: 0 / 0
31.03.2014, 19:10:55
    #38601285
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
spavlov,

Это даже синтаксически некорректный запрос.
...
Рейтинг: 0 / 0
31.03.2014, 19:14:22
    #38601288
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
spavlovВсем привет.

Есть такой казалось бы простой запрос:
Код: sql
1.
SELECT `obj_id`, SUM(`counter`) as cnt FROM `statistic_daily` WHERE GROUP BY `obj_id` ORDER BY `cnt` DESC LIMIT 5;


И чтобы я ни делал, как бы ни крутил индексы результат один - "using temporary, using filesort".


Вообще-то ты сортируешь по вычисляемой колонке ( SUM(`counter`) ). Тут запрос вообще по-другому не может быть обработан, кроме как физической сортировки всего результирующего набора.

spavlov... то стоит забыть об индексах: ...


Ну-ка, расскажи, как в принципе для оптимизации ORDER BY этого запроса можно было бы использовать индексы...
Я порадуюсь...
...
Рейтинг: 0 / 0
01.04.2014, 09:53:04
    #38601562
spavlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
miksoftИмхо, ничего тут не победить.
Разве что в качестве покрывающего сделать индекс (`obj_id`, `counter`), но от "using temporary, using filesort" это не избавит.

ага, этим удалось добиться using index, но как Вы правильно заметили "от using temporary, using filesort это не избавит".

artasошибка, после вере - сразу груп бай ?

после раб дня глаз замылился. да, конечно, WHERE там лишнее (упрощал запрос и забыл where убрать).

MasterZiv Ну-ка, расскажи, как в принципе для оптимизации ORDER BY этого запроса можно было бы использовать индексы...
Я порадуюсь
да, конечно, имелись ввиду не индексы, а файлсорт и тэмпорари.


Всем большое спасибо за ответы! Теперь я спокоен. Вы - лучшие :)

тему закрываем.
...
Рейтинг: 0 / 0
01.04.2014, 15:40:50
    #38602013
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и Order by SUM
spavlovMasterZiv Ну-ка, расскажи, как в принципе для оптимизации ORDER BY этого запроса можно было бы использовать индексы...
Я порадуюсь
да, конечно, имелись ввиду не индексы, а файлсорт и тэмпорари.


Так либо индекс будет использоваться для сортировки, либо темпорари и файл сорт.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GROUP BY и Order by SUM / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]