Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пропихнуть предикат в группировку / 25 сообщений из 29, страница 1 из 2
07.09.2017, 15:31
    #39517467
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
Есть запрос типа

select
f1,
f2,
f3
from
view_1 t1,
view_2 t2
where
t1.id=t2.id
and t1.f4=value


view_1, view_2 сложные каскадные вьюшки

В исходном запросе предикат t1.f4=value всеми правдами и неправдами удается протолкнуть до исходной таблицы, но вот стоит сделать группировку по тем же данным

select
f1,
f2,
sum(f3)
from
view_1 t1,
view_2 t2
where
t1.id=t2.id
and t1.f4=value
group by f1, f2

как весь план улетает к чертям в фулсканы
Как бы извратиться ?
Версия 10.2
...
Рейтинг: 0 / 0
07.09.2017, 15:42
    #39517482
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВАсложные каскадные вьюшки
имеют в себе ansi join?
...
Рейтинг: 0 / 0
07.09.2017, 15:45
    #39517488
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВА,

Может так попробовать?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select distinct
f1,
f2,
sum(f3) over (partition by f1, f2)
from 
view_1 t1,
view_2 t2
where 
t1.id=t2.id
and t1.f4=value
...
Рейтинг: 0 / 0
07.09.2017, 15:59
    #39517509
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВА,
А что если:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
f1,
f2,
sum(f3)
from 
view_1 t1,
view_2 t2
where 
t1.id=t2.id
and t1.f4=value
group by f1, f2,t1.f4
/
...
Рейтинг: 0 / 0
07.09.2017, 16:08
    #39517522
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select f1, f2, sum(f3), max(rn)
from
   (select 
    f1,
    f2,
    f3,
    rownum rn
    from 
    view_1 t1,
    view_2 t2
    where 
    t1.id=t2.id
    and t1.f4=value
   )
group by f1, f2;
...
Рейтинг: 0 / 0
07.09.2017, 16:16
    #39517533
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
была бы возможность переписать запрос я б его в with завернула и никаких проблем :)
а так только план подобрать ((
...
Рейтинг: 0 / 0
07.09.2017, 16:17
    #39517537
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВА,

Т.е. запрос менять нельзя - вопрос строго в пропихивании предиката? А получить план для варианта AmKad и прибить аутлайнами (не помню, что с ними в десятке) - реально?
...
Рейтинг: 0 / 0
07.09.2017, 16:29
    #39517544
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
envDВА,

Т.е. запрос менять нельзя - вопрос строго в пропихивании предиката? А получить план для варианта AmKad и прибить аутлайнами (не помню, что с ними в десятке) - реально?

AmKad-кого типа с оберткой не прижился, попробую еще с over partition
с добовлением уровня группировки по предикату все равно съезжает в фулскан
...
Рейтинг: 0 / 0
07.09.2017, 16:30
    #39517546
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
AlexFF__|,
не, все на +
...
Рейтинг: 0 / 0
07.09.2017, 16:33
    #39517552
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
[quot DВА]envAmKad-кого типа с оберткой не прижился, попробую еще с over partition
с добовлением уровня группировки по предикату все равно съезжает в фулсканДобавление count-шага посредством rownum не спасает?
...
Рейтинг: 0 / 0
07.09.2017, 16:38
    #39517557
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВА,
план запроса с группировкой и без отличается только частью которая в группировке? или вообще другой план? если только частью, то может попробовать как то вклинить часть аутлана? когда то Деев про такое рассказывал. правда я уже смутно помню.
...
Рейтинг: 0 / 0
07.09.2017, 16:54
    #39517580
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
VintDВА,
план запроса с группировкой и без отличается только частью которая в группировке? или вообще другой план? если только частью, то может попробовать как то вклинить часть аутлана? когда то Деев про такое рассказывал. правда я уже смутно помню.

план принципиально другой )
я пыталась внаглую подсунуть аутлайны от плана без группировки плану с группировкой,
а так же и от плана с верхнем уровнем и материлизацией , но оп походу не дурак )
...
Рейтинг: 0 / 0
07.09.2017, 17:07
    #39517599
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВАAlexFF__|,
не, все на +
Я бы взял из 10053 тексты обоих запросов сразу после раскрытия представлений и посмотрел, что именно мешает.
...
Рейтинг: 0 / 0
07.09.2017, 17:21
    #39517608
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
AlexFF__|DВАAlexFF__|,
не, все на +
Я бы взял из 10053 тексты обоих запросов сразу после раскрытия представлений и посмотрел, что именно мешает.

в смысле стоимость шагов?

там несколько десятков вьюх, я даже их порядок соединения в хорошем варианте не осилила )))
несколькими хинтами навскидку удалось забить один из тех, кто пропихнул условие до самого низу
а вы говорите что мешает )))
...
Рейтинг: 0 / 0
07.09.2017, 17:41
    #39517628
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВАв смысле стоимость шагов?
Обычно, если при правке запроса перестает проходить какой-то хинт, использоваться нужные индекс и прочее, нужно в первую очередь проверить, что оптимизатор не переписал запрос так, что старые хинты/индексы/что-то еще в принципе не могут использоваться.
А потом уже можно и посмотреть по шагам трансформации запроса и выбора соединений и доступов.
...
Рейтинг: 0 / 0
07.09.2017, 17:44
    #39517636
kinky cat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВА
план принципиально другой )
я пыталась внаглую подсунуть аутлайны от плана без группировки плану с группировкой,
а так же и от плана с верхнем уровнем и материлизацией , но оп походу не дурак )
а как с группировкой, и с no_query_tansformation он себя ведет ?
...
Рейтинг: 0 / 0
07.09.2017, 17:47
    #39517637
kinky cat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
буковку r пропустил
...
Рейтинг: 0 / 0
07.09.2017, 21:40
    #39517768
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
kinky cat,

Пропихивание предикатов - тоже трансформация
...
Рейтинг: 0 / 0
07.09.2017, 21:42
    #39517771
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВА,

Что ж вы на 10ке то... воспроизвести точно не получится, но если пришлешь экспорт метадата и статистики + сам запрос с трассой 10053, могу попробовать
...
Рейтинг: 0 / 0
07.09.2017, 21:44
    #39517774
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
Имел ввиду попробую на своей какой-нибудь с измененным OPTIMIZER_features_enable
...
Рейтинг: 0 / 0
08.09.2017, 02:36
    #39517877
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
DВАAlexFF__|пропущено...

Я бы взял из 10053 тексты обоих запросов сразу после раскрытия представлений и посмотрел, что именно мешает.

в смысле стоимость шагов?

там несколько десятков вьюх, я даже их порядок соединения в хорошем варианте не осилила )))
несколькими хинтами навскидку удалось забить один из тех, кто пропихнул условие до самого низу
а вы говорите что мешает )))Можно начать с final query для обоих случаев и смотреть отличаются ли только группировкой или она повлияла на иные трансформации.

Если первое, то опять взять аутлайн от первого и посмотреть подхватиться ли. Если не подхватился - вырезать лишнее до определения причины.
Если второе, то разбираться почему трансформировалось иначе.

И не совсем понятно, что понимается под проталкиванием предиката.
Наличие в плане "VIEW PUSHED PREDICATE" или просто применение фильтра на том этапе, на котором ожидается.
Также имеет значение, задействованы ли partitioning pruning и bloom filters.
...
Рейтинг: 0 / 0
08.09.2017, 09:56
    #39517996
Бракованный финский угорь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
dbms_photoshop,

О! Ты вернулсо! В отпуске был? Куда ездил, где отдыхал?
...
Рейтинг: 0 / 0
08.09.2017, 11:16
    #39518040
RМагистр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
Бракованный финский угорьО! Ты вернулсо! В отпуске был? Куда ездил, где отдыхал?

Это не имеет отношение к данной теме.
...
Рейтинг: 0 / 0
08.09.2017, 21:52
    #39518449
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
Бракованный финский угорьdbms_photoshop,

О! Ты вернулсо! В отпуске был? Куда ездил, где отдыхал?А я не отдыхаю. Мне тренер в юности говорил "на кладбище отдохнешь". Очень понравилась его фраза.
Но спасибо за проявленный интерес. :))
...
Рейтинг: 0 / 0
10.09.2017, 01:25
    #39518698
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропихнуть предикат в группировку
dbms_photoshopА я не отдыхаю.

"я просто не напрягаюсь"


ps во вторник вернусь к экспериментам с запросом отпишусь, пока мы с ним по разные стороны МКАДа )
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пропихнуть предикат в группировку / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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