powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как работают запросы?
6 сообщений из 6, страница 1 из 1
Как работают запросы?
    #32117778
Nebary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, знатоки Oracle.

Мой вопрос может показаться легким :) - есть два приведенных ниже запроса, выбирают одно и то же, но с различием по времени:

Первый запрос - работает быстро
Код: plaintext
1.
2.
3.
4.
SELECT * FROM tinsurance, tinscomp, tspradress
WHERE tinsurance.insterrid=tspradress.spradressid
AND tinsurance.inscompid=tinscomp.inscompid
AND tspradress.spradressid IN (SELECT treports.fn_number FROM treports WHERE treports.fn_what= 2  AND treports.fk_owner= 5801 )
AND tinscomp.inscompid IN (SELECT treports.fn_number FROM treports WHERE treports.fn_what= 1  AND treports.fk_owner= 5801 )


Второй запрос - работает в два-три раза медленнее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT * FROM tinsurance, tinscomp, tspradress, treports r1, treports r2
WHERE tinsurance.insterrid=tspradress.spradressid
AND tinsurance.inscompid=tinscomp.inscompid
AND r1.fn_what= 1 
AND r1.fk_owner= 5801 
AND r2.fn_what= 2 
AND r2.fk_owner= 5801 
AND tinscomp.inscompid=r1.fn_number
AND tspradress.spradressid=r2.fn_number


Почему второй запрос медленнее? Разве не должно быть наоборот?
...
Рейтинг: 0 / 0
Как работают запросы?
    #32117780
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SQL> set autot trace exp stat


... и твои запросы.
...
Рейтинг: 0 / 0
Как работают запросы?
    #32117787
Nebary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо! :( Хорошо еще не сказал RTFM
...
Рейтинг: 0 / 0
Как работают запросы?
    #32117790
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Poskolku podzaprosy :
... IN (SELECT treports.fn_number FROM treports WHERE treports.fn_what=2 AND treports.fk_owner=5801)
... IN (SELECT treports.fn_number FROM treports WHERE treports.fn_what=1 AND treports.fk_owner=5801)

yavlyautsya ne korrelirovannymi i oni vypolnyayutsya tolko 1 (ODIN) raz.

Vo vtorom sluchae - proverka znacheniy
AND r1.fn_what=1
AND r1.fk_owner=5801
AND r2.fn_what=2
AND r2.fk_owner=5801

vipolnyaetsya (v obschem/hudshem sluchae) dlya kagdoy stroki, popadayuschey v viborku:
tinsurance.insterrid=tspradress.spradressid
AND tinsurance.inscompid=tinscomp.inscompid
...
Рейтинг: 0 / 0
Как работают запросы?
    #32117791
Nebary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за оперативность!
Вопросов больше не имею :)
...
Рейтинг: 0 / 0
Как работают запросы?
    #32118185
ora600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Запросы не эквивалентны (между строк, типа, читать, что treports.fn_what=1 AND treports.fk_owner уникальны ?)
2) 2Nebary
потому что план выполнения второго запроса не оптимален при данном объеме таблиц, наборе индексов, настройке оптимизатора
если влом дать планы запросов и пару-тройку строк init.ora - RTFM
3) 2ShgGena
>vipolnyaetsya (v obschem/hudshem sluchae) dlya kagdoy stroki, popadayuschey v viborku:
не согласен что "v obschem" :-) В общем можно сказать лишь, что, скорее всего, не используется RBO, а с CBO проблемы
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как работают запросы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]