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




MySQL.RU - Webboard



Вернуться
долго выполняется SELECT в SELECT (Антон) 28/09/2011 - 19:38:14
      Re: В студию, плиз: (Akina) 29/09/2011 - 08:55:34
      Re: В студию, плиз: (Антон) 29/09/2011 - 09:31:20

> Original message text:
> From: Антон - 28/09/2011 - 19:38:14
> Subject:долго выполняется SELECT в SELECT
> -----------------
> Здравствуйте все.
> Ищу помощи.
> Суть вопроса: есть три таблицы
> attributes ~400 записей
> options ~300 000 записей
> categories ~30 000 записей
>
> есть два запроса:
> 1. SELECT * FROM attributes WHERE id IN (*)
> 2. SELECT op.oid FROM options op, categories cat WHERE cat.pid = op.pid AND cat.cid = 8 GROUP BY op.oid
>
> Запрос №2 выполняется за 0.05 сек. и возращает 16 цифр
> Запрос №1 если вместо * поставить вручную (строку) результат второго запроса выполняется за 0.2712 сек.
>
> А если сделать селект в селекте, т.е. запрос 2 поставить вместо *, то этот запрос будет выполняться минут 15.
>
> В чем может быть причина?
>


From: Антон - 29/09/2011 - 09:31:20
Subject:В студию, плиз:
-----------------
Спасибо за беспокойство, разобрался.
Проблема в том, что для каждой записи из attributes делается отдельная выборка из options+categories.
проблема решается путем превращения IN (SELECT...) в JOIN
т.е.:
SELECT
attributes.id, attributes.name
FROM
attributes, options, categories
WHERE
categories.pid = options.pid AND categories.cid = 8 AND options.id = attributes.oid
GROUP BY attributes.id


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

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

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



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