@viktorross

Долгий запрос mysql, что переделать?

здравствуйте, подскажите как должен выглядеть этот запрос в нормальном виде, чтобы работал быстро?
Сейчас это 6 секунд, если убрать в самом начале class_ads.*, то 1,5 секунды, но тогда выведется только несколько столбцов, как это оптимизировать все
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 < '2020-01-31 08:13:36' 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_categories_lang on class_categories_lang.id = class_ads.category_id  
		inner join class_slugs on class_ads.id=class_slugs.object_id
		  where class_ads.active=1  and class_slugs.`type`='listing'  order by  `priority` desc,  date_added  desc  limit 0, 36;
  • Вопрос задан
  • 482 просмотра
Решения вопроса 1
@ettychel
Решение было предложено в комментариях.
inner join class_categories_lang on class_categories_lang.id = class_ads.category_id

Этот join точно нужен?
Может хватит where?
from class_categories_lang l, class_ads a
where l.id = a.category_id

ну и соответственно в select указать столбцы которые нужны
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
thewind
@thewind
php программист, front / backend developer
Без структуры бд - Гадание на кофейной гуще. Нужны схемы таблиц, индексы, констрейнты.
Ответ написан
Ваш ответ на вопрос

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

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