![](/images/lev_menu.jpg)
![Новости](/images/a_news.jpg)
![Документация](/images/a_documents.jpg)
![Download](/images/a_download.jpg)
![Webboard](/images/a_webboard.jpg)
![Поиск](/images/a_searh.jpg)
![FAQ/ЧаВо](/images/a_faq.gif)
![Обратная связь](/images/a_mail.jpg)
|
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
> Original message text:
> 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
>
From: Rodent - 17/01/2006 - 21:47:01
Subject:Проектирование форума (скорость обработки)
-----------------
Help please
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
26034
|
|