Общие > Базы данных

Проектирование форума

(1/5) > >>

Rodent:
Доброе время суток.
У меня тут возникли небольшие трудности с выполнением скрпита, который вытаскивает дату и имя пользователя последнего поста в теме. Т.е. сортировка тем форума по дате последнего поста: выводим имя форума, дата последнего поста, имя автора последнего поста.


SELECT t1.* , max( t2.date ) AS last, MAX( t2.pid ) AS older, t3.*, count(*) 
FROM `we_topics` AS t1, `we_posts` AS t2, `we_posts` AS t3 
WHERE t1.forum_id = \'$id\' AND t1.tid = t2.topic_id 
GROUP BY t1.tid, t3.pid 
HAVING t3.pid = older 
ORDER BY t1.position desc, last DESC 
LIMIT $from, $maxmess";


Что к чему относиться интуинтивно понятно, так что расписывать переменные не буду.
Структуру таблицу опишу ниже.
Так вот в чем вопрос. Раньше когда постов было не очень много, скрипт работал удовлетворительно, но теперь их стало больше, и он начинает заметно тормозить (9-15 сек) на локалке.
Теперь вопрос: Можно ли данный запрос оптимизировать?
Решения:
1. сама оптимизация запроса, возможно он написан не верно.
2. делать запросы в цикле по каждому последнему посту в данной теме
3. при каждом добалении поста, изменять дату в таблице тем.
Что подскажите??? Какой выбрать?
Заранее спасибо.
С уважением, Rodent

Меняздесьдавнонет:
самое первое, что нужно сделать, это запустить свой запрос в консоли, написав перед ним слово explain
explain select ...
И смотреть, что напишет.
Хотя, и так, в общем, понятно, что нет нужных индексов на связях таблиц

Rodent:
А можно с этого места поподробнее...
Или что почитать?

Так что же получается что запрос правильный, это неправильно сконструирована бд. И получается  первый вариант решения наилучший?

Rodent:
вот что мне вывел explain

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
1 SIMPLE t2 ALL NULL NULL NULL NULL 481 Using temporary; Using filesort 
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 weare.t2.topic_id 1 Using where 
1 SIMPLE t3 ALL NULL NULL NULL NULL 481  


Что это значит?

Rodent:
мне никто советом не поможет?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии