Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему UNION ALL тормозит / 14 сообщений из 14, страница 1 из 1
15.02.2017, 13:46
    #39404886
abort
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему UNION ALL тормозит
делаю 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
15.02.2017, 15:57
    #39405051
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему UNION ALL тормозит
Код: 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
15.02.2017, 16:37
    #39405105
Lary Denis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему UNION ALL тормозит
abort,

Код: plsql
1.
select * from source where dt between d1 and d2 or dt between d3 and d4
...
Рейтинг: 0 / 0
15.02.2017, 17:37
    #39405171
Почему UNION ALL тормозит
abortПодскажите почему так происходит. План выполнения запроса предоставить не могу к сожаленьюдаже с планом не всегда понятны причины затупов оптимизатора. а без планов вообще гадание на кофейной гуще в хрустальном шаре получается...
...
Рейтинг: 0 / 0
16.02.2017, 13:07
    #39405650
Почему UNION ALL тормозит
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
16.02.2017, 14:04
    #39405733
abort
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему UNION ALL тормозит
Добрый Э - Эх,

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

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

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

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

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

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

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


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