powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / GROUP BY и Order by SUM
7 сообщений из 7, страница 1 из 1
GROUP BY и Order by SUM
    #38601230
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".

Нашел в доке по 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
GROUP BY и Order by SUM
    #38601233
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, ничего тут не победить.
Разве что в качестве покрывающего сделать индекс (`obj_id`, `counter`), но от "using temporary, using filesort" это не избавит.
...
Рейтинг: 0 / 0
GROUP BY и Order by SUM
    #38601238
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
GROUP BY и Order by SUM
    #38601285
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spavlov,

Это даже синтаксически некорректный запрос.
...
Рейтинг: 0 / 0
GROUP BY и Order by SUM
    #38601288
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
GROUP BY и Order by SUM
    #38601562
spavlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftИмхо, ничего тут не победить.
Разве что в качестве покрывающего сделать индекс (`obj_id`, `counter`), но от "using temporary, using filesort" это не избавит.

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

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

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

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


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

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


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


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