Как оптимизировать запрос к бд?

->addFrom("LEFT JOIN `betaintranet`.`ad_c`","`tgb`","`node`.`nid` = `tgb`.`obj_id` AND `tgb`.`start_date`<= NOW() AND `tgb`.`end_date` >= NOW() AND `tgb`.`ban_type` < '4' /* vrezka */")
			->addField("COUNT(DISTINCT `tgb`.`bid`)","`tgbactiv`")			
			->addField("`tgb`.`bid`","`tgbid`")
			->addField("`tgb`.`phone`","`tgbphonebaze`")
		
		->addFrom("LEFT JOIN `betaintranet`.`ad_banners`","`tgbinfo`","`tgb`.`bid` = `tgbinfo`.`bid`")
			->addField("`tgbinfo`.`filename`","`tgbimageurl`")
			->addField("`tgbinfo`.`url`","`tgburl`")
			->addField("`tgbinfo`.`text`","`tgbtext`")
			->addField("`tgbinfo`.`footer`","`tgbprice`")
			->addField("`tgbinfo`.`header_text`","`tgbtitle`")


Полный запрос монструозен до неприличия, но этот дждйн тормозит страничку до минуты.
А по факту берет 1 картинк 1 айди 1 тайтл 1 дескрипшен ;(
я так понимаю что очень медленно работает < 4.
Указав явное значение 2 скорость занчительно возрастает.
Вопрос как лучше сделать этот запрос с точк изрения производительнсоти.
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
NOW() NOT BETWEEN `tgb`.`start_date` AND `tgb`.`end_date`

Чтобы понять, что тормозит нужно видеть структуру таблиц. В качестве универсального варианта можешь попробовать перенести
`tgb`.`start_date`<= NOW() AND `tgb`.`end_date` >= NOW() AND `tgb`.`ban_type` < '4'
в WHERE.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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