@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 - выполняется уже порядка получаса, это очень долго.

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

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

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

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

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект