ďťż
 
Dlaczego moj kursor pod Postgres dziala tak wolno. ďťż
 
Dlaczego moj kursor pod Postgres dziala tak wolno.
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

Dlaczego moj kursor pod Postgres dziala tak wolno.



Szymic1 - 21-06-2006 00:10
Dlaczego moj kursor pod Postgres dziala tak wolno.
  Witam mam nastepujacy problem
mam tabele:

CREATE OR REPLACE FUNCTION alias(
v_mask alias.mask%TYPE,
) RETURNS INT8 AS

z indeksem

CREATE INDEX alias_mask_ind ON alias(mask);

tabela ma okolo tysiaca wierszy.
Teraz zapuszczam taka procedure:

LOOP
<........>
OPEN cursor1 FOR SELECT * FROM alias WHERE mask>=alias_out
ORDER BY mask;
i:=0;
LOOP
i:=i+1;
FETCH cursor1 INTO alias_row;
EXIT WHEN i=10;
END LOOP;
CLOSE cursor1;
EXIT WHEN end_number=10000;
END LOOP;

No i niestety otwarcie kursora i zczytanie jest bardzo wolne ale jesli
dodam np.LIMIT 100 procedura dziala bardzo szybko.
OPEN cursor1 FOR SELECT * FROM alias WHERE mask>=alias_out
ORDER BY mask LIMIT 100;

Takie dzialanie jest bardzo dziwne dla mnie poniewaz z zalozenia kursor
powinien dzialac tak ze ustawia sie na pierwsza wartosc i dociaga
nastepna wartosc jak jest FETCH a z mojego doswiadczenia wynika ze tak
nie jest.

Czy ktos ma pomysl co robie zle albo jak zrobic zeby select bez limit
dzialal szybko?

Michal





Szymic1 - 21-06-2006 00:10

  Sory tabla jest zdefiniowana:

CREATE TABLE alias (
alias_id BIGSERIAL PRIMARY KEY,
mask VARCHAR(20) NOT NULL DEFAULT '',

);

Przez pomylke co innego wkleilem :)




hubert depesz lubaczewski - 21-06-2006 00:11

  On 2006-06-20, Szymic1 <dyrex@poczta.onet.pl> wrote:
> LOOP
> <........>
> OPEN cursor1 FOR SELECT * FROM alias WHERE mask>=alias_out
> ORDER BY mask;

dopisz do otwierania tego kursora: FOR READ ONLY.

a poza tym - jest jakiś konkretny powód dla którego nie używasz po
prostu limitów? kursory w postgresie są, ale ich uzywanie to zazwyczaj
przykład przenoszenia nawyków z innych baz niż celowego i przemyślanego
działania.

depesz

--
http://www.depesz.com/ - nowy, lepszy depesz




hubert depesz lubaczewski - 21-06-2006 00:11

  On 2006-06-20, Szymic1 <dyrex@poczta.onet.pl> wrote:
> OPEN cursor1 FOR SELECT * FROM alias WHERE mask>=alias_out

sorry. nie for read only tylko "NO SCROLL". for read only nie zaszkodzi,
ale głównie chodzi o no scroll

depesz

--
http://www.depesz.com/ - nowy, lepszy depesz
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nawschodzie.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