powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему UNION ALL тормозит
14 сообщений из 14, страница 1 из 1
Почему UNION ALL тормозит
    #39404886
abort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю 2 одинаковых запроса с разницей только в дате
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
WITH T1 AS
(SELECT * FROM SOURCE WHERE DT BETWEEN D1 AND D2)
,
T2 AS
(SELECT * FROM SOURCE WHERE DT BETWEEN D3 AND D4)
SELECT * FROM T1
UNION ALL
SELECT * FROM T2


Каждый по отдельности запрос выполняется за 2 мин, но если стоит UNION ALL - то этот общий запрос висит часами
Диапазон дат входит в 1 определенную партицию
Подскажите почему так происходит. План выполнения запроса предоставить не могу к сожаленью
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405051
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
WITH T1 AS
(SELECT rownum, t1.* FROM SOURCE t1 WHERE t1.DT BETWEEN D1 AND D2)
,
T2 AS
(SELECT rownum, t2.* FROM SOURCE t2 WHERE t2.DT BETWEEN D3 AND D4)
SELECT * FROM T1
UNION ALL
SELECT * FROM T2
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405105
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abort,

Код: plsql
1.
select * from source where dt between d1 and d2 or dt between d3 and d4
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405171
abortПодскажите почему так происходит. План выполнения запроса предоставить не могу к сожаленьюдаже с планом не всегда понятны причины затупов оптимизатора. а без планов вообще гадание на кофейной гуще в хрустальном шаре получается...
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405650
abort...
Каждый по отдельности запрос выполняется за 2 мин, но если стоит UNION ALL - то этот общий запрос висит часами
...
Подскажите почему так происходит...Как один из вероятных вариантов - оптимизатор "подумал", что из-за многократного обращения в основной секции запроса к WITH-подзапросам, будет лучше сделать "материализацию" результатов запросов T1 [и | или] T2 во временные таблицы...
Раз уж планы показать нам не можешь, то посмотри сам - не появился ли в плане запроса с UNION ALL шаг "TEMP TABLE TRANSFORMATION". Если такой шаг есть в плане - попробуй убедить оптимизатор не делать материализации посредством хинта online:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH T1 AS
(
 SELECT /*+ inline*/ * 
   FROM SOURCE WHERE DT BETWEEN D1 AND D2)
,
T2 AS
(
 SELECT /*+ inline*/ * 
   FROM SOURCE WHERE DT BETWEEN D3 AND D4)
SELECT * FROM T1
UNION ALL
SELECT * FROM T2
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405733
abort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

вот приложил план
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405829
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abort,

В первом плане у тебя применятся bloom filter для sub-partitions, а во втором используется индексный доступ.
Теперь покажи планы для запросов по отдельности.
Независимо от вышесказанного, partition range all для соединяемой таблицы выглядит подозрительно. Полагаю от этого можной уйти.
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39405968
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abort,

видимо, все дело в том, что приключился join factorizaton

https://blogs.oracle.com/optimizer/entry/optimizer_transformations_join_factorization

и тебе надо радоваться от того, что два запроса за один раз выполнились гораздо умнее,
чем выполнялись два раза по одному запросу.

Положено испытать счастье и чувство глубокой благодарности к создателю за дары его
мудрости.
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39406286
abort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39406287
abort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это один из запросов, который обращается к одному интервалу дат
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39406292
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abortЭто один из запросов, который обращается к одному интервалу датВсе чудесатее и чудесатее.
Короче ответ на изначальный вопросabortПодскажите почему так происходит.Query transformations.
А более конкретный ответ ты все равно не поймешь, да и вообще вся эта дискуссия больше похожа на клоунаду.
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39406304
abort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В опщем я понял что оптимизатору в голову придет то и будет.
Может хинты помогут?
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39406326
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abort,

Есть много методов, но обязательно наличие мозга и умения читать и думать. Сорри.
Ты мог бы начать с ответа ORA__SQL, но чукча, походу, не читатель.
...
Рейтинг: 0 / 0
Почему UNION ALL тормозит
    #39406512
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abortВ опщем я понял что оптимизатору в голову придет то и будет
Ну, вообще-то, с этим не поспоришь )
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему UNION ALL тормозит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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