Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тестирование DISTINCT vs GROUP BY, тормоза с LIMIT 590,20. Появление temporary / 4 сообщений из 4, страница 1 из 1
19.11.2015, 14:27:16
    #39107782
as.kharlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование DISTINCT vs GROUP BY, тормоза с LIMIT 590,20. Появление temporary
Пишу запрос соединяющий 5 таблиц.
Необходимо отобрать только различные и отобрать 20 записей.

Вариант 1: Использую GROUP BY для отбора различных. Результат:
при LIMIT 1, 20 время выполнения 0,578 sec.
при LIMIT 590,20 время выполнения 12,703 sec.
EXPLAIN показывает Using where и Using index. Никаких Using temporary


Вариант 2: Использую DISTINCT для отбора различных. Результат:
при LIMIT 1, 20 время выполнения 0,016 sec.
при LIMIT 590,20 время выполнения 0,016 sec.
EXPLAIN показывает Using temporary

Возникают вопросы:
1. Почему GROUP BY медленнее DISTINCT?
2. Почему с DISTINCT время вывода для последней страницы такое же же как для первой, хотя, вроде бы, должен тоже поднимать все 600 записей для последней страницы.
3. Как DISTINCT может быть вообще быстрее GROUP BY, если пишут, что оптимизатор все равно преобразует DISTINCT в GROUP BY?
4. Могу ли я на основе приведенных выше результатов использовать в моем случае DISTINCT и не заморачиваться или Using temporary станут боком при большом количестве пользователей?

Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
19.11.2015, 15:31:16
    #39107866
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование DISTINCT vs GROUP BY, тормоза с LIMIT 590,20. Появление temporary
as.kharlov 0,016 sec Сомневаюсь, что это честное время. Добавляйте слово SQL_NO_CACHE сразу после слова SELECT, чтобы не влиял кэш запросов.
...
Рейтинг: 0 / 0
19.11.2015, 15:35:18
    #39107875
as.kharlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование DISTINCT vs GROUP BY, тормоза с LIMIT 590,20. Появление temporary
miksoftas.kharlov 0,016 sec Сомневаюсь, что это честное время. Добавляйте слово SQL_NO_CACHE сразу после слова SELECT, чтобы не влиял кэш запросов.

Время честное SQL_NO_CACHE везде стоит.
...
Рейтинг: 0 / 0
19.11.2015, 15:37:22
    #39107878
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование DISTINCT vs GROUP BY, тормоза с LIMIT 590,20. Появление temporary
as.kharlov,

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


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