Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Проектирование форума (скорость обработки) (Rodent) 15/01/2006 - 06:59:00
      Re: Проектирование форума (скорость обработки) (Rodent) 17/01/2006 - 21:47:01
      Re: Проектирование форума (скорость обработки) (Dinky) 17/01/2006 - 23:26:38



From: Rodent - 15/01/2006 - 06:59:00
Subject:Проектирование форума (скорость обработки)
-----------------
Доброе время суток.
У меня тут возникли небольшие трудности с выполнением скрпита, который вытаскивает дату и имя пользователя последнего поста в теме. Т.е. сортировка тем форума по дате последнего поста: выводим название форума, дата последнего поста, имя автора последнего поста.

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. добавить в таблицу тем, новую колонку и при каждом добалении поста, изменять дату в ней. Но как же быть с администрированием, ведь надо будет это учитывать.
Что подскажите??? Какой выбрать?

На другом форуме, мне сказали, что нужно применять индексы. у меня их не было. 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



после определения индексов

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref PRIMARY,i_fid i_fid 3 const 1 Using where; Using temporary; Using filesort
1 SIMPLE t2 ref i_tid i_tid 4 weare.t1.tid 3
1 SIMPLE t3 ALL NULL NULL NULL NULL 481



Помогите советом.
Заранее спасибо.
С уважением, Rodent


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
26034



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |