Задать вопрос
@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 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@art_karetnikov
Лучший мой проект: Мобильный банк Сбербанка РФ.
Проблема не в джойне, а в строке поиска. like "%smth%" означает, что при поиске не будет использоваться индекс, а значит, пойдет перебор по строкам таблицы. like "smth%" даст куда более красивую картину, если на messaqe есть индекс(а он там должен быть при таком поиске). Полнотекстовый поиск можно, но там, конечно, свои грабли.
Еще можно сделать индекс на name и использовать в поиске его/составной индекс.
Ответ написан
Комментировать
@n-fom
Full-Text Search
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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