@Art4es

Как оптимизировать данный запрос с Join?

Есть 2 таблицы, предположим First (id, name, message) и Second(id, value, message), в каждой по миллиону записей
Есть запрос:
select First.id, First.name, Second.value
from First
join Second
on First.id =Second.id
where First.message like "%smth%" or Second.message like "%smth%"


Понятно, что джойнится миллион на миллион и потом идет поиск.
Как можно оптимизировать данный запрос? Выполняется уж очень долго
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 2
art_karetnikov
@art_karetnikov
Лучший мой проект: Мобильный банк Сбербанка РФ.
Проблема не в джойне, а в строке поиска. like "%smth%" означает, что при поиске не будет использоваться индекс, а значит, пойдет перебор по строкам таблицы. like "smth%" даст куда более красивую картину, если на messaqe есть индекс(а он там должен быть при таком поиске). Полнотекстовый поиск можно, но там, конечно, свои грабли.
Еще можно сделать индекс на name и использовать в поиске его/составной индекс.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 февр. 2020, в 05:15
5000 руб./за проект
26 февр. 2020, в 01:14
600 руб./в час
26 февр. 2020, в 01:13
1500 руб./за проект