SeaGull
Junior Member
Шапка форума (оптимизация запроса)
На сайте несколько форумов. В шапке каждой страницы форумов выводится табличка со списком форумов, количеством сообщений (общим и новым) на каждом из них на текущий момент и времением последних сообщений. Дата для учета новых сообщений у каждого пользователя, естественно, своя.
Каждый раз при выводе шапки генерится примерно такой запрос:
В реале форумов несколько больше.
Естественно, запрос получается не быстрый - он не кешируется и не использует индексы.
Подскажите пожалуйста, можно ли как-то оптимизировать запрос ?
Или лучше разбить его на несколько более мелких ?
На сайте несколько форумов. В шапке каждой страницы форумов выводится табличка со списком форумов, количеством сообщений (общим и новым) на каждом из них на текущий момент и времением последних сообщений. Дата для учета новых сообщений у каждого пользователя, естественно, своя.
Каждый раз при выводе шапки генерится примерно такой запрос:
PHP:
select
count(if (forum='forum_1', id, null)) as forum_1_all,
count(if ((forum='forum_1' && date > '2005-09-28 17:00:23'), id, null)) as forum_1_new,
max(if (forum='forum_1', date, 0)) as forum_1_date,
count(if (forum='forum_2', id, null)) as forum_2_all,
count(if ((forum='forum_2' && date > '2005-09-28 17:00:23'), id, null)) as forum_2_new,
max(if (forum='forum_2', date, 0)) as forum_2_date,
count(if (forum='forum_3', id, null)) as forum_3_all,
count(if ((forum='forum_3' && date > '2005-09-28 17:00:23'), id, null)) as forum_3_new,
max(if (forum='forum_3', date, 0)) as forum_3_date,
from FORUMS;
Естественно, запрос получается не быстрый - он не кешируется и не использует индексы.
Подскажите пожалуйста, можно ли как-то оптимизировать запрос ?
Или лучше разбить его на несколько более мелких ?