powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select from where in (select ....)
7 сообщений из 7, страница 1 из 1
select from where in (select ....)
    #39707227
flint1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день.

Есть запрос (очень долго отрабатывает , почти 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' ) вместо селелкта, то изначальный запрос очень быстро отрабатывает, в плане бежит по индексам, нет фулсканов, отрабатывает менее секунды и всё хорошо.

как перестроить изначальный запрос? во внутреннем запросе условие формируется по диапазону дат
...
Рейтинг: 0 / 0
select from where in (select ....)
    #39707238
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flint1,

1) матерелизовать подзапрос (мож + hint cardinality)
2) если ид уникальные наоборот вместо ин - джоин

....
stax
...
Рейтинг: 0 / 0
select from where in (select ....)
    #39707241
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flint1,

ищите кандидатов на очередной сезон "битвы экстрасенсов"?

структуры таблиц и типы данных колонок не озвучены, версия сервера не указана, текст представления не приведен, схема индексации базовых таблиц не упомянуты, актуальность статистик неизвестна...
...
Рейтинг: 0 / 0
select from where in (select ....)
    #39707388
igaraev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flint1,
Попробуйте конструкцию with с хинтом matereliaze
...
Рейтинг: 0 / 0
select from where in (select ....)
    #39707399
igaraev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flint1,

Еще если вы точно знаете, что ID шников не более 10 штук будет всегда, попробуйте во внутренний селект добавить условие rownum<11. И если это поможет пересобирете статистику по всем таблицам в запросе.

begin
DBMS_STATS.GATHER_TABLE_STATS (
ownname => '"Владелец"',
tabname => '"Название таблицы"',
estimate_percent => 100
);
end;
...
Рейтинг: 0 / 0
select from where in (select ....)
    #39707462
flint1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
извиняйте, в следующий раз укажу структуру и версию.
айдишников может быть и больше, зависит от диапазона.
а вот с функцией with, боюсь что будет работать как надо.
приду на работу, проверю.
Спасибо ещё раз.
...
Рейтинг: 0 / 0
select from where in (select ....)
    #39707481
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flint1а вот с функцией with, боюсь что будет работать как надо.with может оказаться не более, чем синтаксическим сахаром. Особенно, если оракл не материализует результат его работы во временную таблицу.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select from where in (select ....)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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