@Orbite

Как оптимизировать sql запрос с GROUP BY?

Есть таблица с 3 миллионами записей и есть запрос
SELECT OFFNAME FROM ADDROBJ 
WHERE SHORTNAME IN ('г', 'обл', 'Чувашия', 'АО', 'Аобл', 'край', 'округ', 'Респ', 'п', 'р-н', 'дп', 'кп', 'пгт', 'рп', 'с/о', 'с/п', 'городок', 'гп', 'д', 'дп', 'нп', 'остров', 'с', 'ст-ца', 'х', 'сад') 
GROUP BY OFFNAME
ORDER BY NULL

На его выполнение уходит порядка 18 секунд, скажите можно как нибудь его оптимизировать. EXPLAIN выдает using temporary, без order by null еще и using filesort
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT DISTINCT `OFFNAME` 
  FROM `ADDROBJ`
  WHERE SHORTNAME IN ('г', 'обл', 'Чувашия', 'АО', 'Аобл', 'край', 'округ', 'Респ', 'п', 'р-н', 'дп', 'кп', 'пгт', 'рп', 'с/о', 'с/п', 'городок', 'гп', 'д', 'дп', 'нп', 'остров', 'с', 'ст-ца', 'х', 'сад')

И добавить индексы по OFFNAME и SHORTNAME
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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