|
|
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
добрый день. Есть запрос (очень долго отрабатывает , почти 7 минут) SELECT * FROM V_ВЬЮХА WHERE (ID$ IN (SELECT ID FROM DOCUMENT WHERE Условие) по плану лезет в разные места делает фулсканы на больших таблицах... Внутренний запрос (SELECT ID FROM DOCUMENT WHERE Условие) отрабатывает доли секунды, выдаёт 5 айдишников ... А если эти 5 айдишников вставить в IN ('1234', '5473', '78432', '654', '87' ) вместо селелкта, то изначальный запрос очень быстро отрабатывает, в плане бежит по индексам, нет фулсканов, отрабатывает менее секунды и всё хорошо. как перестроить изначальный запрос? во внутреннем запросе условие формируется по диапазону дат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 17:54 |
|
||
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
flint1, 1) матерелизовать подзапрос (мож + hint cardinality) 2) если ид уникальные наоборот вместо ин - джоин .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 18:04 |
|
||
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
flint1, ищите кандидатов на очередной сезон "битвы экстрасенсов"? структуры таблиц и типы данных колонок не озвучены, версия сервера не указана, текст представления не приведен, схема индексации базовых таблиц не упомянуты, актуальность статистик неизвестна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 18:15 |
|
||
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
flint1, Попробуйте конструкцию with с хинтом matereliaze ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2018, 07:25 |
|
||
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
flint1, Еще если вы точно знаете, что ID шников не более 10 штук будет всегда, попробуйте во внутренний селект добавить условие rownum<11. И если это поможет пересобирете статистику по всем таблицам в запросе. begin DBMS_STATS.GATHER_TABLE_STATS ( ownname => '"Владелец"', tabname => '"Название таблицы"', estimate_percent => 100 ); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2018, 08:05 |
|
||
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
Спасибо. извиняйте, в следующий раз укажу структуру и версию. айдишников может быть и больше, зависит от диапазона. а вот с функцией with, боюсь что будет работать как надо. приду на работу, проверю. Спасибо ещё раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2018, 09:39 |
|
||
|
select from where in (select ....)
|
|||
|---|---|---|---|
|
#18+
flint1а вот с функцией with, боюсь что будет работать как надо.with может оказаться не более, чем синтаксическим сахаром. Особенно, если оракл не материализует результат его работы во временную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2018, 09:59 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39707481&tid=1883421]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 511ms |

| 0 / 0 |
