@andrshpa

MariaDB(mySQL) — как быстро(!) оставить только уникальные варианты?

Вопрос больше общего характера, чем по конкретной ситуации.

В ответ на запрос получаем ответ:
1,2,5,8,1,2,2,4,3,5,7
Нужно получить только уникальные(не повторяющиеся) значения - такое:
1,2,5,8,4,3,7

Обычно для этого используют SELECT DISTINCT или GROUP BY если первое невозможно.

Проблема в том, что запрос без SELECT DISTINCT выполняется примерно за 4 мин(база большая - это довольно приемлемо.)
Запрос с SELECT DISTINCT - выполняется уже порядка получаса, это очень долго.

Как эффективно решать такие задачи?
  • Вопрос задан
  • 512 просмотров
Решения вопроса 1
@andrshpa Автор вопроса
Помогло использование вместо DISTINCT

GROUP_BY + индекс на столбец по которому он выполняется.

Exploding - персональное спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@buzina_v_ogorode
Никак.
Для выполнение DISTINCT нужна сортировка - а это долго.

Как вариант - общая оптимизация.
Посмотрите по EXPLAIN PLAN что у вас не так идет, что слишком долго.
Ответ написан
Комментировать
@AnneSmith
самая ленивая
сортировать в базе, дубликаты убрать кодом
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы