parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 11.09.2007 15:42

Все индексы стоят правильно (вроде). Эксплеин тоже ровный.
и правильные индексы не стоят и explain сразу говорит, что хреново дело.

- int(10) != int(11)

- читайте про составные индексы. group_id_2 -- очень невыгодный, т.к. по первому-же полю ничего не отсекается, поэтому он не используется (спорим у вас новостей в будущем 2 с половиной штуки, да и то по праздникам?)

- type = ALL для article -- отстой. Using temporary; Using filesort - второй отстой. вам надо избавиться от первого (от второго не избавитесь). с другой стороны там всего 4682 записей... это запрос не на 170 секунд.

- посмотрите на ваши календари. вам не нужен такой запрос, как вы пишите. у вас их два: 1 -- за текущий месяц (т.е. надо отчильтровать WHERE dt_published >= 'начало месяца') и группировать по YMD, второй -- группировать по YM, D тут нафиг не нужен. ваш запрос достаёт много ненужных данных (- время теряется на передачу)