powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация запроса
9 сообщений из 9, страница 1 из 1
Оптимизация запроса
    #32167574
AndrewY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация:
Имеются две таблицы Table1 (C1 varchar(10), C2 varchar(10), N1 NUMBER )
и Table2 (C1 varchar(10), C2 varchar(10), Field3 VARCHAR(20) ).
Для каждой из них создан индекс по полю C1.

Из этих таблиц производится выбор данных следующим запросом

select /* + USE_MERGE */
t1.C1, t1,C2, t1.N1, t2.Field3
from
(select * from Table1 where C1='ABCD' order by C2) t1,
(select * from Table2 where C1='ABCD' order by C2) t2
where t1.C2=t2.C2

В подсказке оптимизатору указан метод объединения сортировкой-слиянием.

Вопрос: помогает ли в этом случае выражение ORDER BY осуществить объединение результатов двух подзапросов ?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167579
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В подсказке оптимизатору указан метод объединения сортировкой-слиянием

а из каких соображений?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167585
AndrewY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из тех соображений, что поле C2 в обоих таблицах не является проиндексированным, и при использовании метода вложенных циклов время поиска ответных строк будет достаточно большим. Или я чушь несу ?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167594
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Из тех соображений, что поле C2 в обоих таблицах не является
>проиндексированным, и при использовании метода вложенных циклов время
>поиска ответных строк будет достаточно большим

Верно, но в таком случае более эфективным будет hash join, а не sort merge.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167604
AndrewY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to dba


Можно Вас попросить подкорректировать мой SQL-запрос с учетом Вашего совета. Я не знаю как использовать выражение JOIN в Oracle может быть это (+) ?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167634
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто поставьте другой хинт /*+ use_hash(t1 t2) */:

можно еще так модифицировать:

Код: plaintext
1.
2.
3.
4.
5.
select  /*+ use_hash(t1 t2) full(t1) full(t2)*/  
t1.C1, t1,C2, t1.N1, t2.Field3 
from Table1 t1, Table2 t2
where t1.C2=t2.C2
         and t1.C1='ABCD'
         and t2.C1='ABCD'
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167643
AndrewY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to dba

А в какой версии Oracle появился хинт USE_HASH ?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32167649
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А в какой версии Oracle появился хинт USE_HASH ?

точно не скажу, но думаю, что с появлением cbo, т.е. наверняка с 7.3

неужели у Вас еще более древняя? Кстате, а почему не запустить запрос и не проверить со всеми возможными вариантами?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #32168264
Gri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gri
Гость
Провер select t1.C1, t1,C2, t1.N1, t2.Field3
from Table1 t1, Table2 t2
where t2.C1 ='ABCD'
and t1.C1 = t2.C1
and t1.C2 = t2.C2
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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