ďťż
 
Oracle 8.1.7 - Explain Plan ďťż
 
Oracle 8.1.7 - Explain Plan
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Oracle 8.1.7 - Explain Plan



Marek Horodyski - 11-04-2007 00:02
Oracle 8.1.7 - Explain Plan
  Mam kolosalne roznice w wykonaniu tego samego zapytania w 2 roznych bazach.
Moge zalogowac sie do tych baz na wlasciciela schematu.
Jak sprawdzic plan wykonania zapytania w tych bazach (zwyklego selecta, nie
procedury, co jest w faq) ?

Pozdrawiam,
Marek Horodyski





Marek Horodyski - 11-04-2007 00:02

 
Użytkownik "Marek Horodyski" <m.horodyski@pzuzycie.com.pl> napisał w
wiadomości news:evffnv$m24$1@atlantis.news.tpi.pl...
> Mam kolosalne roznice w wykonaniu tego samego zapytania w 2 roznych
> bazach.
[...]
> procedury, co jest w faq) ?

Juz mam ( z "system" co prawda, ale jest :)

Pozdrawiam,
Marek Horodyski




Marek Horodyski - 11-04-2007 00:02

 
Użytkownik "Marek Horodyski" <m.horodyski@pzuzycie.com.pl> napisał w
wiadomości news:evfqhn$hrh$1@atlantis.news.tpi.pl...
>
> Użytkownik "Marek Horodyski" <m.horodyski@pzuzycie.com.pl> napisał w
> wiadomości news:evffnv$m24$1@atlantis.news.tpi.pl...
>> Mam kolosalne roznice w wykonaniu tego samego zapytania w 2 roznych
>> bazach.
> [...]
>> procedury, co jest w faq) ?
>
> Juz mam ( z "system" co prawda, ale jest :)

Dwa identyczne schematy, ale na jednym sa swieze statystyki, i baza zamiast
skorzystac z indeksu robi full scan jednej z tabel.
Rozne takie /*+ INDEX( tabela nazwa_indeksu)*/ nie skutkuja (albo nie umie
uzyc). Pozostalo tylko zdropowac statystyki - tylko jakim poleceniem ?

Pozdrawiam,
Marek Horodyski




ThomasO@cpas.com - 11-04-2007 00:02

  On Apr 10, 8:00 am, "Marek Horodyski" <m.horody...@pzuzycie.com.pl>
wrote:
> Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
> wiadomościnews:evfqhn$hrh$1@atlantis.news.tpi.pl.. .
>
>
>
> > Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
> > wiadomościnews:evffnv$m24$1@atlantis.news.tpi.pl.. .
> >> Mam kolosalne roznice w wykonaniu tego samego zapytania w 2 roznych
> >> bazach.
> > [...]
> >> procedury, co jest w faq) ?
>
> > Juz mam ( z "system" co prawda, ale jest :)
>
> Dwa identyczne schematy, ale na jednym sa swieze statystyki, i baza zamiast
> skorzystac z indeksu robi full scan jednej z tabel.
> Rozne takie /*+ INDEX( tabela nazwa_indeksu)*/ nie skutkuja (albo nie umie
> uzyc). Pozostalo tylko zdropowac statystyki - tylko jakim poleceniem ?
>
> Pozdrawiam,
> Marek Horodyski

Marek,
Syntax do HINT jest:
SELECT /* INDEX( <table name>, <index name> ) */...
Hint jest ignorowany jezeli masz syntax error "," lub index nie
istnieje.

Drop stats - to bardzo zly pomysl.
Syntax:
begin dbms_utility.ANALYZE_SCHEMA(<schema name>,'DELETE'); end;
Thomas





Marek Horodyski - 11-04-2007 00:02

 
Użytkownik <ThomasO@cpas.com> napisał w wiadomości
news:1176211810.945582.84390@n76g2000hsh.googlegro ups.com...
On Apr 10, 8:00 am, "Marek Horodyski" <m.horody...@pzuzycie.com.pl>
wrote:
> Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
> wiadomościnews:evfqhn$hrh$1@atlantis.news.tpi.pl.. .
>
>
>
> > Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w

[...]

Dzieki.
Koniec koncow - statystyki zostaly - chociaz wyglada na to, ze to wlasnie po
ich uaktualnieniu sie popsulo.
Dziwnie to wyglada, ale /* INDEX( <table name>, <index name> ) */ nie
pomagalo. Owszem, wykorzystywal indeks, ale robil na nim full scan.
Trwalo tak samo dlugo jak full scan na tabeli. Troche przez przypadek (i
zaskoczenie!) kolega wpadl innego hinta :

/*+ ordered */

i index zaczal byc RANGE SCAN. No i mam 78 msec. zamiast 5s. :)
Niby nie na to wskazuje ten hint, ale dziala, i chwalic go za to !

Pozdrawiam,
Marek Horodyski




ThomasO@cpas.com - 11-04-2007 00:02

  On Apr 10, 11:06 am, "Marek Horodyski" <m.horody...@pzuzycie.com.pl>
wrote:
> Użytkownik <Thom...@cpas.com> napisał w wiadomościnews:1176211810.945582.84390@n76g2000hsh .googlegroups.com...
> On Apr 10, 8:00 am, "Marek Horodyski" <m.horody...@pzuzycie.com.pl>
> wrote:
>
> > Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
> > wiadomościnews:evfqhn$hrh$1@atlantis.news.tpi.pl.. .
>
> > > Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
>
> [...]
>
> Dzieki.
> Koniec koncow - statystyki zostaly - chociaz wyglada na to, ze to wlasniepo
> ich uaktualnieniu sie popsulo.
> Dziwnie to wyglada, ale /* INDEX( <table name>, <index name> ) */ nie
> pomagalo. Owszem, wykorzystywal indeks, ale robil na nim full scan.
> Trwalo tak samo dlugo jak full scan na tabeli. Troche przez przypadek (i
> zaskoczenie!) kolega wpadl innego hinta :
>
> /*+ ordered */
>
> i index zaczal byc RANGE SCAN. No i mam 78 msec. zamiast 5s. :)
> Niby nie na to wskazuje ten hint, ale dziala, i chwalic go za to !
>
> Pozdrawiam,
> Marek Horodyski

Marek,
Moja wina:
Syntax jest:
SELECT /*+ INDEX( <table name>, <index name> ) */...
Zapomnialem o "+"
Thomas




pwola - 11-04-2007 00:02

  >Koniec koncow - statystyki zostaly - chociaz wyglada na to, ze to wlasnie po
>ich uaktualnieniu sie popsulo.
> kolega wpadl innego hinta :
>
> /*+ ordered */
>

Sprawdź jeszcze

/*+ USE_NL(table1 table2) */
albo
/*+ USE_HASH(table1 table2) */

To pierwsze jest lepsze gdy wynik łaczenia tabel ma tylko kilka
rekordów, to drugie gdy trzeba połączyć większość rekordów.

No i niestety ten typ tak ma, że naliczanie statystyk to czasem nie
jest dobry pomysł. Też tak miałem - po naliczeniu statystyk ORACLE
zaczął forsować HASH_JOINy chociaż NESTED_LOOPS dawało kilkanaście
razy szybsze odpowiedzi.
Nie udało mi się wtedy znaleźć odpowiedzi jak dotrzeć bezpośrednio do
parametrów optymalizatora, żeby go przekonać, że nie ma racji ;-)
i trzeba było dopisać hinty do kilkudziesięciu zapytań
i skasować statystyki :-(

I jeszcze na koniec drobna uwaga - gdy ORACLE gwałtownie zaczyna
zmieniać sposoby wykonania zapytań może to być sygnałem, że w systemie
zaczyna się coś dziać ( tabele przekroczyły jakieś krytyczne
wielkości, fragmentacja tabel jest za duża, system dyskowy zaczyna
mieć problemy itp.)




Marek Horodyski - 12-04-2007 00:08

  Użytkownik "pwola" <pwola@polbox.com> napisał w wiadomości
news:t4rn13t2cpcflep9r9n0h97a7v3rjhvtg6@4ax.com...
> >Koniec koncow - statystyki zostaly - chociaz wyglada na to, ze to wlasnie
> >po
>>ich uaktualnieniu sie popsulo.
>> kolega wpadl innego hinta :
>>
>> /*+ ordered */
>>
>
> Sprawdź jeszcze
>
> /*+ USE_NL(table1 table2) */
> albo
> /*+ USE_HASH(table1 table2) */

Tylko ordered :)
Powyzsze bylo probowane, i kolega prawie sie poddajac, ze slawami "nic nie
poradze" wpisal ten ordered przed index( - jakby 2 hinty na raz - i
zadzialalo - co bylo [nie]malym zaskoczeniem :). Zostalo /*+ ordered */ -
dziala wyśmienicie, no i statystyki pozostały (ich skasowanie nie pomagalo).

Pozdrawiam,
Marek Horodyski




Marek Horodyski - 12-04-2007 00:08

 
Użytkownik <ThomasO@cpas.com> napisał w wiadomości
news:1176229080.269410.138230@d57g2000hsg.googlegr oups.com...
On Apr 10, 11:06 am, "Marek Horodyski" <m.horody...@pzuzycie.com.pl>
wrote:
> Użytkownik <Thom...@cpas.com> napisał w
> wiadomościnews:1176211810.945582.84390@n76g2000hsh .googlegroups.com...
> On Apr 10, 8:00 am, "Marek Horodyski" <m.horody...@pzuzycie.com.pl>
> wrote:
>
> > Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
> > wiadomościnews:evfqhn$hrh$1@atlantis.news.tpi.pl.. .
>
> > > Użytkownik "Marek Horodyski" <m.horody...@pzuzycie.com.pl> napisał w
>

[...]

>Marek,
>Moja wina:
>Syntax jest:
>SELECT /*+ INDEX( <table name>, <index name> ) */...
>Zapomnialem o "+"
>Thomas

O "+" wiedzialem. Nie pomagalo. Pewnikiem dlatego ze dotyczylo to "like" i
konkatenacji po takich "dziwnych" polach IE$0..n, z odfiltrowaniem po uzyciu
funkcji statystycznych. Cos na ksztalt :

select nvl( sum( kwota), 0)
from ( select /*+ ordered */ p.id_ub, data_od, kwota,
row_number() over( PARTITION BY p.id_ub ORDER BY data_od DESC) porzadek
from id_ub p, war w
where p.IS_DELETED = 'N' and w.IS_DELETED = 'N'
and p.ie$1 like :1||'%'
and w.ie$0 like p.ID_UB||'%'
and data_od <= :2)
where porzadek = 1

Mozna by pozakladac inaczej indeksy, ale przyczyna takich zapytan lezy w
mieszaniu roznych technologii. Powoduje to "ssanie dwóch matek" :)

Pozdrawiam,

Marek Horodyski
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com