ďťż
 
prosba o optymalizacje zapytania (ORACLE) ďťż
 
prosba o optymalizacje zapytania (ORACLE)
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

prosba o optymalizacje zapytania (ORACLE)



lll - 13-03-2006 11:25
prosba o optymalizacje zapytania (ORACLE)
  Witam,
Mam powazny problem z zapytaniem, zwraca wyniki takie jak chce, ale dla
np. 2och rekordow czeba czekac ok. 5 min, a jesli sie zawezi zapytanie
wpisujac jedno "id" w miejsce "start with t2.ID='1'", to momentalnie
zwraca wynik, wiec czemu nie potrafi zwrocic tego szybko przy wstawianiu
po koleji id'ow z "tabela1"?

moje zapytanie wyglada tak:

select
t.ID,
{
select
SUM(t1.wartosc) --sumuje wartosci z tabeli1
from
tabela1 t1,--przechowuje wartosci tabeli2
tabela2 t
where
t.ID_TABELA1 (+)= t1.ID
and t1.ID IN --zwraca id'y "tabela1"
(--mysle ze tu gdzies jest blad.
--zalezy mi na tym aby w miejscu,
--gdzie jest "start with t2.ID=t1.ID"
--t1.ID bylo kolejnym ID pochodzacym z
--samej gory: t.ID

select t2.ID
from tabela2 t2
start with t2.ID = t1.ID
connect by t2.ID_PARENT = PRIOR t2.ID
)
}
}Test
from
tabela t

Nie wiem czy to zapytanie tak ma wygladac poprawnie, bardzo mi zalezy na
tym, aby w miejscu "start with t2.ID = t1.ID <---" t1.ID byly wstawiane
wartosci jakie pokolei przyjmuje t.ID. czyli np.
t.ID = '1' to w start with t2.ID='1', zwraca wynik, dalej..
t.ID = '2' to w start with t2.ID='2', zwraca wynik, etc.

Strasznie mnie to zapytanie dziwi gdyz takie zapytanie wykonuje sie odrazu:

select
t.ID,
{
select
SUM(t1.wartosc)
from
tabela1 t1,--przechowuje wartosci tabeli2
tabela2 t
where
t.ID_TABELA1 (+)= t1.ID
and t1.ID IN
(
select t2.ID
from tabela2 t2
start with t2.ID = '1' --TUTAJ
connect by t2.ID_PARENT = PRIOR t2.ID
)
}
}Test
from
tabela t

Bardzo prosze o pomoc gdyz juz wszystkiego probowalem a zapytanie wciaz
bardzo wolno dziala,

Pozdrawiam





=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 13-03-2006 11:25

  lll <seeker10@poczta.onet.pl> wrote:
> Mam powazny problem z zapytaniem, zwraca wyniki takie jak chce, ale
> dla np. 2och rekordow czeba czekac ok. 5 min, a jesli sie zawezi
> zapytanie wpisujac jedno "id" w miejsce "start with t2.ID='1'", to
> momentalnie zwraca wynik, wiec czemu nie potrafi zwrocic tego szybko
> przy wstawianiu po koleji id'ow z "tabela1"?

Jeśli podzapytanie zawiera warunek "t2.ID = t1.ID", to jest to
podzapytanie skorelowane, które musi się wykonywać za każdym razem od
nowa. Gdy wstawisz tam '1', to wystarczy wykonać je raz.

Żeby wykombinować lepsze rozwiązanie przyda się:
- słowno-muzyczny opis co chcesz osiągnąć tym zapytaniem
(ułatwia wymyślenie zupełnie innego rozwiązania)
- CREATE TABLE/INDEX..., żeby móc testować
- chociaż kilka INSERTów, żeby sprawdzić czy wyniki są takie same
- informacje o ilości danych w obu tabelach

--
Michał Kuratczyk
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... [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?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= =?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?= [Oracle] 10g wersja =?ISO-8859-2?Q?pe=B3na_i_Express_Editi?==?ISO-8859-2?Q?on?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.xlx.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