Justique
@Justique

Оптимизация группировки SQL запроса?

Имеется база ~64 гб.
SELECT
 d.url,
 GROUP_CONCAT(CONCAT(w.text, '[', wd.count, ']') SEPARATOR '; ') AS texts
FROM
 words AS w
 INNER JOIN words_in_domain AS wd ON w.id = wd.word
 INNER JOIN domains AS d ON wd.domain = d.id
WHERE
 w.text LIKE '%почин%' AND wd.count > 3
 OR w.text LIKE '%вент%' AND wd.count > 2
GROUP BY
 wd.domain
HAVING
 texts LIKE '%почин%'
 AND texts LIKE '%вент%'
--  COUNT(*) > 2
ORDER BY
 NULL

Необходимо сгруппировать по ключевым словам, проблема в том что запрос просто наглухо ложит сервер.
Помогите оптимизировать.

UPD:
Для примера результат запроса с лимитом
761d8784812a4101b466990c94eb0f67.png
  • Вопрос задан
  • 408 просмотров
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Смотрите в сторону полнотекстового поиска. Начните со штатного в mysql. Если не поможет - используйте сторонний поиск: elastic search, sphinx

like %что-то% тормозить будет всегда.
Ответ написан
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
сделайте EXPLAIN своего запроса.
LIKE по такой таблице будет тормозить, без вариантов. FULL TEXT SEARCH - но готовьтесь, индекс может весить весело.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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