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




MySQL.RU - Webboard



Вернуться
Странное поеведение индексов (SveRel) 13/08/2010 - 20:15:34
      Re: Странное поеведение индексов (Diter) 16/08/2010 - 18:49:08
      Re: Понял! (SveRel) 16/08/2010 - 23:34:52

> Original message text:
> From: SveRel - 13/08/2010 - 20:15:34
> Subject:Странное поеведение индексов
> -----------------
> Есть список статей привязанных к компаниям. Связь: много-ко-многим и для этого используется таблица связей состоящая из двух столбцов. Что бы найти все статьи привязанных к категории #5 я выполняю запрос:
> ====================
> EXPLAIN SELECT *
> FROM `articles` AS `r1`
> WHERE `r1`.`id`
> IN (
> SELECT `r2`.`article_id`
> FROM `companies_articles_rel` AS `r2`
> WHERE `r2`.`company_id` = 5
> )
> =====================================
>
> Прикол в том, что MySQL не хочет использовать индексы. Она пишет:
> possible_keys = NULL.
> Хотя если выполнить запрос:
> =====================================
> EXPLAIN SELECT *
> FROM `articles` AS `r1`
> WHERE `r1`.`id`
> IN (6)
> =====================================
>
> Тогда possible_keys = PRIMARY - т.е. всё таки она их использует, но не тогда когда выполняется вложенный SQL-запрос.
>
> P.S.> Сам результат первого SQL-запроса правильный - т.е. возвращает она то что мне нужно. Но почему не используются индексы???
>


From: SveRel - 16/08/2010 - 23:34:52
Subject:Понял!
-----------------
Она для каждой найденой статьи пыталась выполнить вложенный SQL-запрос, что бы сравнить условие!
Видимо для неё результаты вложенного запроса не считаются статическим. Хотя для меня было очевидным то что он всегда возвращает одно и то же, поэтому его надо сделать в первую очередь и получить набор ID-шников.


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

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

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



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