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

Как эффективно решать такие задачи?
  • Вопрос задан
  • 537 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
@andrshpa Автор вопроса
Помогло использование вместо DISTINCT

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

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

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

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

Похожие вопросы