Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Принудительное навязывание плана  [new]
Wisky
Member

Откуда: Москва
Сообщений: 160
Есть два запроса A и B, оба возвращают около 70-ти записей, первый отрабатывает за 30сек, второй 0.5 сек, но при их присоединении запрос отрабатывает за 6 минут.

select A.*, B.*
 from (select
            from 
        )A inner join 
(select
            from 
        )B on A.key1=B.key1


Как принудительно указать последовательность формирования множеств?
14 авг 18, 17:34    [21642227]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
Бельфя
Member

Откуда: Краснодар
Сообщений: 78
(select /*+precompute_subquery */ ... from ) A
14 авг 18, 17:54    [21642257]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6729
Wisky,

План запроса посмотреть для начала. Что-то подсказывает, что там не просто from A.
14 авг 18, 17:55    [21642258]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
Wisky
Member

Откуда: Москва
Сообщений: 160
я и не говорю, что у меня там просто "from A", я хочу чтобы в начале сформировался A (агрегации), B (словарь), а потом их соединил, а он меняет план выполнения.
14 авг 18, 18:13    [21642284]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
Wisky
Есть два запроса A и B, оба возвращают около 70-ти записей, первый отрабатывает за 30сек, второй 0.5 сек, но при их присоединении запрос отрабатывает за 6 минут.

select A.*, B.*
 from (select
            from 
            where rownum >= 1
        )A inner join 
(select
            from 
            where rownum >= 1
        )B on A.key1=B.key1


Как принудительно указать последовательность формирования множеств?
Попробуйте "материализовать" результаты встроенных представлений
14 авг 18, 18:34    [21642302]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
bhr
Member

Откуда:
Сообщений: 56
Щукина Анна
Попробуйте "материализовать" результаты встроенных представлений

глупый вопрос, а no_merge разве не для этого предназначен? материализация имхо более жесткая инструкция, требующая обращение к диску.
16 авг 18, 18:27    [21644906]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
bhr,

а вы попробуйте, после нам расскажите...
особенно, с обращением к диску в случае с "материализацией" встроенного представления...

Подозреваю, вы попутали "материализацию" встроенного представления (выполнение запроса без "сливания" встроенного представления и проталкивания в него предикатов ) с материализацией (спулингом результата запроса во временную таблицу) WITH-кляузы.
16 авг 18, 19:39    [21644963]     Ответить | Цитировать Сообщить модератору
 Re: Принудительное навязывание плана  [new]
shurka22
Member

Откуда:
Сообщений: 81
Wisky
Как принудительно указать последовательность формирования множеств?

В разных ситуациях мне помогали разные рецепты:
1) конструкция with
2) хинты:
precompute_subquery
no_merge use_nl()
ordered use_nl()
driving_site() - для работы через дб-линк
17 авг 18, 08:45    [21645352]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить