Здравствуйте, подскажите пожалуйста , кто понимает как подобное исправить, у меня есть такой запрос к примеру, он формируется в php в зависимости от параметров ,которые передаются, выполняется он почти 2 секунды
select class_ads.*, class_ads.id as adid, date_format(class_ads.`date_added`,'%d.%m в %H:%i') as date_nice, date_format(class_ads.`date_expires`,'%d.%m в %H:%i') as date_expires_nice, UNIX_TIMESTAMP(class_ads.`date_added`) as `time_added`, (class_ads.date_expires < '2021-03-14 04:57:27' and class_ads.date_expires!='0000-00-00 00:00:00' and class_ads.active=0) as expired
, class_slugs.slug
from class_ads
inner join class_slugs on class_ads.id=class_slugs.object_id
where class_ads.active=1 and class_ads.category_id in (239,241,242,243,245,246,248,249,201) and ( (class_ads.country like 'Астраханская область') or class_ads.country like "all" ) and ( (class_ads.region like 'астрахань') or class_ads.region like "all" ) and class_slugs.`type`='listing' order by `priority` desc, date_added desc limit 0, 24;
Если убрать параметры ниже, то запрос выполняется 0.0034, что в принципе нормально, учитывая, что это inner join да и записей в базе почти 300 000, при этом индексы на class_ads.country и class_ads.region есть, думал что они отсутствуют, почему так и что можно придумать? подозреваю, что это из-за поиска по тексту, неужели придется создавать отдельную таблицу с id городов , записывать эти id в бд и потом при выполнении данного запроса, передавать из шаблона уже id, а не текст? опять же, если осуществить поиск по заголовку, а там тоже текст 50-200 символов, то та же самая ерунда, это будет долгий запрос, хотя я видел на сайтах поиск и работает он давольно шустро , а база там гораздо объемнее, как вообще решаются подобные вещи?просто увеличивается мощность сервера или есть фишка в запросе, которая устроит процесс?
and ( (class_ads.country like 'Астраханская область') or class_ads.country like "all" ) and ( (class_ads.region like 'астрахань') or class_ads.region like "all" )