Добрый день, уважаемые коллеги
На первый взгляд есть простая задача, но как решить оптимальным способом не могу придумать. Буду рад за любую помощь
Задача состоит в том чтобы получить все уникальные строки из двух колонок, и посчитать сколько раз всего попадалось каждое из значений в любой из этих же колонок + ограничение по дате
Запрос который у меня вышел
SELECT
t.str,
(SELECT COUNT(*) FROM tableName WHERE date BETWEEN '2021-01-01' AND '2021-12-31' AND str1 = t.str OR str2 = t.str) as count
FROM (
(SELECT DISTINCT str1 as str FROM tableName WHERE date BETWEEN '2021-01-01' AND '2021-12-31')
UNION
(SELECT DISTINCT str2 as str FROM tableName WHERE date BETWEEN '2021-01-01' AND '2021-12-31')
) as t
Запрос работает, но производительность хочется подтянуть. Сейчас запрос обрабатывает около 700к за 15 сек. Как можно оптимизировать и улучшить производительность этого запроса? Индексы стоят
Спасибо