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




MySQL.RU - Webboard



Вернуться
Оптимизация запроса с подзапросом (Сергей) 24/07/2007 - 15:14:17
      Re: Оптимизация запроса с подзапросом (AXAE) 02/08/2007 - 06:50:46



From: Сергей - 24/07/2007 - 15:14:17
Subject:Оптимизация запроса с подзапросом
-----------------
Есть запрос:

SELECT * FROM Messages WHERE Messages.Ask IN (SELECT Ask.Ask FROM Ask WHERE Ask.DateTime<20070710)

Я переписал таким образом:

SELECT * FROM Messages WHERE EXISTS (SELECT 1 FROM Ask WHERE Ask.Ask = Messages.Ask AND Ask.DateTime<20070710)

Однако оптимизатор попрежнему просматривает вс таблицу `Messages`

mysql> EXPLAIN SELECT *
-> FROM Messages
-> WHERE EXISTS (
-> SELECT 1
-> FROM Ask
-> WHERE Ask.Ask = Messages.Ask
-> AND Ask.DateTime < 20070710
-> )
-> LIMIT 1 , 30;
+----+--------------------+----------+------+-----------------------------+---------+---------+--------------------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+----------+------+-----------------------------+---------+---------+--------------------+--------+-------------+
| 1 | PRIMARY | Messages | ALL | NULL | NULL | NULL | NULL | 233869 | Using where |
| 2 | DEPENDENT SUBQUERY | Ask | ref | PRIMARY,DateTime,DateTime_2 | PRIMARY | 3 | forum.Messages.Ask | 2 | Using where |
+----+--------------------+----------+------+-----------------------------+---------+---------+--------------------+--------+-------------+
2 rows in set (0.00 sec)


Как указать оптимизатору, что сначала он должен выполнить подзапрос, а потом на основании его основной?


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

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

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



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