Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Вниз

План выполнения подзапросов   Найти похожие ветки 

 
PrettyFly   (2002-10-28 13:04) [0]

Я всегда думал, что IB выполняет запросы поумному, но оказалось, что это совсем не так...


SELECT * FROM B
WHERE
B.G IN (SELECT C.G FROM C WHERE C.ID IN(1,2,3,4,5,6,7,8,9,10))
AND (B.P = 6)


Надо сначала выполнить внутренний SELECT один раз, а потом уже внешний. А выполняется внешний, и для каждой записи внутренний.
В результате, вместо M+N, время выполнения получается М*N. Как это можно исправить?


 
passm   (2002-10-28 13:59) [1]

PrettyFly (28.10.02 13:04)> Не знаю... Но могу предложить альтернативный запрос:
SELECT DISTINCT B.*
FROM B
INNER JOIN C ON (C.G = B.G)
WHERE C.ID IN (1,2,3,4,5,6,7,8,9,10)
AND B.P = 6
Но, это странно. Т. к. во внутреннем запросе не использкуется B :\ .


 
Desdechado   (2002-10-28 17:09) [2]

Ничего странного. Это ж механизм подзапроса. А в нем предусмотрено именно так: для каждой выбираемой строки основного запроса выполнить подзапрос (вне зависимости от его вида и кажущейся простоты).
А лучше выполни обычное объединение, оно эффективнее и доступнее для понимания :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
3-59013
- Andrew -
2002-10-29 13:47
2002.11.18
Как вытащить Jpeg in BLOB


1-59206
sad
2002-11-04 09:53
2002.11.18
Печать канвы TeeChart


4-59493
Alexander
2002-10-07 06:08
2002.11.18
Если у принтера настроена печать в файл, то можно ли как-то


14-59413
kaif
2002-10-31 00:27
2002.11.18
Инсталляция апача под win32


14-59438
VictorT
2002-10-31 21:31
2002.11.18
Вопрос про кнопку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский