Temat: Dwa widoki, nested loop, no merge, push pred.

Chcę zrobić coś takiego :
Mam 2 widoki inline'owe.
V_ADRESY (IDADRESU,WARTOSC),
V_OBIEKTY_ADR(IDOBIEKTU,IDADRESU) i tabelkę POM(IDOBIEKTU, NUMER).

widoki V_ADRESY i V_OBIEKTY_ADR zawierają w sobie UNION ALL i warunki na status (nie wyciagane z widoku).
Czy Oracle umie policzyc zapytanie w taki sposób, aby pushnac predykaty do wewnątrz obu widoków w zapytaniu:

select /*+no_merge(adr) no_merge(obadr) push_pred(adr) push_pred(obadr)*/adr.* from
pom, v_obiekty_adr obadr, v_adresy adr
where pom.num = 1 and pom.idobiektu = obadr.idobiektu and adr.idobiektu = obadr.idadresu;

?
Marcin Zieliński

Marcin Zieliński Autoryzowane
szkolenia Oracle i
IBM

Temat: Dwa widoki, nested loop, no merge, push pred.

Czemu nie sprawdzisz - skorzystaj z kolumny FILTER_PREDICATES i ACCESS_PREDICATES w v$sql_plan

Pozdrawiam

Temat: Dwa widoki, nested loop, no merge, push pred.

Marcin Zieliński:
Czemu nie sprawdzisz - skorzystaj z kolumny FILTER_PREDICATES i
ACCESS_PREDICATES w v$sql_plan
Sprawdzilem. Nie udawało mi się uzyskać planu jaki chciałbym (skorelowane joiny, czyli w sumie NL, właśnie po to aby odpowiednie access predicates uzyskać). Hintowałem, hintowałem, hintowałem i gdy już byłem o krok od uzyskania oczekiwanego planu (tzn. do jednego z widoku były pushowane predykaty i zaczynałem hintować drugą, bliźniaczą część) to zmieniał tylko miejscami i pushował do drugiego widoku, cudując w pierwszym. Nie udawało się uzyskać w obu...
Ale pogooglałem i znalazłem hacka.

Wygląda na to że 11.1.0.7 possysa jeszcze, jeśli chodzi o JPPD.
Zmiana parametru _optimizer_cost_based_transformation sprawiła, że zaczął sam z siebie generować odpowiednie plany.

BTW:
Jestem dziecko windowsa, w związku z czym użyłem TOAD'a. Też ładnie pokazuje AP i FP.
Marcin Zieliński

Marcin Zieliński Autoryzowane
szkolenia Oracle i
IBM

Temat: Dwa widoki, nested loop, no merge, push pred.

Jacek Tomaka:
Marcin Zieliński:
Czemu nie sprawdzisz - skorzystaj z kolumny FILTER_PREDICATES i
ACCESS_PREDICATES w v$sql_plan
Sprawdzilem. Nie udawało mi się uzyskać planu jaki chciałbym
[...]
Ale pogooglałem i znalazłem hacka.
[...]
Wygląda na to że 11.1.0.7 possysa jeszcze, jeśli chodzi o JPPD.

A widzisz - nie podałeś wersji, a ja Twoje pytanie zrozumiałem bardziej generalnie - czy wogóle może zrobić takie przekształcenie czy nie :)
Zmiana parametru _optimizer_cost_based_transformation sprawiła, że zaczął sam z siebie generować odpowiednie plany.

Przy okazji zerknij jeszcze na _optimizer_push_pred_cost_based
BTW:
Jestem dziecko windowsa, w związku z czym użyłem TOAD'a. Też ładnie pokazuje AP i FP.

Nieważne gdzie wyświetlił - ważne co to tak naprawde znaczy :)

PozdrawiamMarcin Zieliński edytował(a) ten post dnia 14.05.10 o godzinie 16:11

Następna dyskusja:

Cardinality po nested loopach.




Wyślij zaproszenie do