|
|
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Ситуация: Имеются две таблицы 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 осуществить объединение результатов двух подзапросов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 17:15:17 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
>В подсказке оптимизатору указан метод объединения сортировкой-слиянием а из каких соображений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 17:17:51 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Из тех соображений, что поле C2 в обоих таблицах не является проиндексированным, и при использовании метода вложенных циклов время поиска ответных строк будет достаточно большим. Или я чушь несу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 17:23:01 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
>Из тех соображений, что поле C2 в обоих таблицах не является >проиндексированным, и при использовании метода вложенных циклов время >поиска ответных строк будет достаточно большим Верно, но в таком случае более эфективным будет hash join, а не sort merge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 17:31:02 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
to dba Можно Вас попросить подкорректировать мой SQL-запрос с учетом Вашего совета. Я не знаю как использовать выражение JOIN в Oracle может быть это (+) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 17:38:17 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
просто поставьте другой хинт /*+ use_hash(t1 t2) */: можно еще так модифицировать: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:08:56 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
to dba А в какой версии Oracle появился хинт USE_HASH ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:21:26 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
>А в какой версии Oracle появился хинт USE_HASH ? точно не скажу, но думаю, что с появлением cbo, т.е. наверняка с 7.3 неужели у Вас еще более древняя? Кстате, а почему не запустить запрос и не проверить со всеми возможными вариантами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:24:39 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32167594&tid=1990367]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
193ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 496ms |

| 0 / 0 |
