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




MySQL.RU - Webboard



Вернуться
Оптимизация запроса Select (sfairet) 10/12/2008 - 17:16:44
      Re: Оптимизация запроса Select (Pavel) 15/12/2008 - 12:16:01



From: sfairet - 10/12/2008 - 17:16:44
Subject:Оптимизация запроса Select
-----------------
Есть запрос в базу. Суть запроса выдавать записи по темам. Одна запись из таблицы может

принадлежать ко многим темам.
Таблица stories - содержит сами записи, имеет текстовые поля и поле sid(INT), записей порядка

200
Таблица stories_topics - привязка sid записи(поле news) к id темы(поле topic), записей примерно

400
Таблица topics_big - обеспечивает древо тем и подтем(степень вложенности - 3). Поле big -

родительская тема, small - подтема. Записей порядка 200.

Смысл sql запроса выдать все записи из stories, которые находятся в теме с id переданным

скриптом(в данном случае 4) или в любой дочерней теме, все дочерние темы записаны в таблице

topics_big (максимальная степень вложенности - 3).

Сам запрос:

SELECT SQL_CALC_FOUND_ROWS * FROM stories WHERE sid IN (
SELECT DISTINCT(s.sid) from stories as s
INNER JOIN stories_topics as top ON (s.sid = top.news)
INNER JOIN topics_big as big ON (top.topic = big.small)
LEFT JOIN topics_big as big2 ON (big.big = big2.small)
WHERE (big.big=4
OR big.small=4
OR big2.big=4
OR big2.small=4)
)
ORDER BY anchor, sid DESC limit 0, 20;


Ну и смысл поста в том, что запрос может отрабатывать и по одной минуте.
Раньше вместо него было порядка 300 мелких запросов, пока над этим думал голову сломал - в sql

не очень понимаю, но сейчас нагрузка на сервер возрасла и опять стало все тормозить.

Буду рад любой подсказке!


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

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

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



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