Sortowanie w PostgreSQL
Artur - 17-06-2007 00:15
Sortowanie w PostgreSQL
Witam!
Mam zapytanie:
EXPLAIN ANALYZE SELECT tfield FROM tws ORDER BY tfield;
Query Plan wyglada tak:
------------------------------------------------------------------------------------------------------------------- Sort (cost=177824.04..181821.54 rows=159900 width=12) (actual time=1991.637..2087.435 rows=159900 loops=1) Sort Key: tfield -> Seq Scan on tws (cost=0.00..39615.99 rows=159900 width=12) (actual time=0.016..88.862 rows=159900 loops=1) Total runtime: 2160.171 ms
-------------------------------------------------------------------------------------------------------------------
Pytanie jest co PostgreSQL robi od 88 do 1991 milisekundy? Wydaje mi sie ze przed sortowaniem przygotowuje sobie jakies wewnetrzne struktury i nie jest to wyszczegolnione na Query Plan, ale moze ktos ma jakis inny pomysl?
Wersja PostgreSQL to 8.2.4. Tabela tws posiada tylko pole tfield z typem TEXT.
slawekj - 17-06-2007 00:15
> Pytanie jest co PostgreSQL robi od 88 do 1991 milisekundy? Wydaje mi sie > ze przed sortowaniem przygotowuje sobie jakies wewnetrzne struktury i nie > jest to wyszczegolnione na Query Plan, ale moze ktos ma jakis inny pomysl?
Wg mnie serwer obs?u?y? w tym czasie inne dzia?aj?ce procesy.
pozdr. S?awek
=?UTF-8?B?RmlsaXAgUmVtYmlhxYJrb3dza2k=?= - 17-06-2007 00:15
Artur wrote at 2007-05-22 15:52: > Witam! > > Mam zapytanie: > > EXPLAIN ANALYZE SELECT tfield FROM tws ORDER BY tfield; > > Query Plan wyglada tak: > > > ------------------------------------------------------------------------------------------------------------------- > Sort (cost=177824.04..181821.54 rows=159900 width=12) (actual > time=1991.637..2087.435 rows=159900 loops=1) > Sort Key: tfield > -> Seq Scan on tws (cost=0.00..39615.99 rows=159900 width=12) (actual > time=0.016..88.862 rows=159900 loops=1) > Total runtime: 2160.171 ms > > ------------------------------------------------------------------------------------------------------------------- > > > Pytanie jest co PostgreSQL robi od 88 do 1991 milisekundy? sortuje :) 1991 to czas zwr??cenia pierwszego rekordu z posortowanego zbioru
Herakles - 17-06-2007 00:15
Artur wrote:
> Witam! > > Mam zapytanie: > > EXPLAIN ANALYZE SELECT tfield FROM tws ORDER BY tfield; > > Query Plan wyglada tak: > > > ------------------------------------------------------------------------------------------------------------------- > Sort (cost=177824.04..181821.54 rows=159900 width=12) (actual > time=1991.637..2087.435 rows=159900 loops=1) > Sort Key: tfield > -> Seq Scan on tws (cost=0.00..39615.99 rows=159900 width=12) (actual > time=0.016..88.862 rows=159900 loops=1) > Total runtime: 2160.171 ms > > ------------------------------------------------------------------------------------------------------------------- > > > Pytanie jest co PostgreSQL robi od 88 do 1991 milisekundy? Wydaje mi sie > ze przed sortowaniem przygotowuje sobie jakies wewnetrzne struktury i nie > jest to wyszczegolnione na Query Plan, ale moze ktos ma jakis inny pomysl? > > > Wersja PostgreSQL to 8.2.4. Tabela tws posiada tylko pole tfield z typem > TEXT. Czy ta tabela ma na tym tfield primary key? Bo mi wygl?da na to, ?e nie!
Artur - 17-06-2007 00:15
>> Mam zapytanie: >> >> EXPLAIN ANALYZE SELECT tfield FROM tws ORDER BY tfield; >> >> Query Plan wyglada tak: >> >> >> ------------------------------------------------------------------------------------------------------------------- >> Sort (cost=177824.04..181821.54 rows=159900 width=12) (actual >> time=1991.637..2087.435 rows=159900 loops=1) >> Sort Key: tfield >> -> Seq Scan on tws (cost=0.00..39615.99 rows=159900 width=12) >> (actual >> time=0.016..88.862 rows=159900 loops=1) >> Total runtime: 2160.171 ms >> >> ------------------------------------------------------------------------------------------------------------------- >> >> >> Pytanie jest co PostgreSQL robi od 88 do 1991 milisekundy? Wydaje mi sie >> ze przed sortowaniem przygotowuje sobie jakies wewnetrzne struktury i nie >> jest to wyszczegolnione na Query Plan, ale moze ktos ma jakis inny >> pomysl? >> >> >> Wersja PostgreSQL to 8.2.4. Tabela tws posiada tylko pole tfield z typem >> TEXT. > Czy ta tabela ma na tym tfield primary key? > Bo mi wygl?da na to, ?e nie!
Doszlem juz powoli dlaczego to tak jest. Zdaje sie ze przedzial czasu podawany przez Query Plan jest czasem od ktorego dostepny byl pierwszy rekord do czasu do ktorego pobrano ostatni (prosze mnie poprawic jesli sie myle) a nie czas od ktorego PostgreSQL rozpoczal sortowanie do czasu do ktorego skonczyl.
Specjalnie w tym przykladzie na tej tabelce nie stworzylem zadnego indeksu, tak by PostgreSQL posortowal dane nie korzystajac z indeksu. Gdyby tfield byl primary key'em oczywiscie Query Plan wygladal by zupelnie inaczej :).
Artur
Herakles - 17-06-2007 00:15
> Doszlem juz powoli dlaczego to tak jest. Zdaje sie ze przedzial czasu > podawany przez Query Plan jest czasem od ktorego dostepny byl pierwszy > rekord do czasu do ktorego pobrano ostatni (prosze mnie poprawic jesli sie > myle) a nie czas od ktorego PostgreSQL rozpoczal sortowanie do czasu do > ktorego skonczyl. > > Specjalnie w tym przykladzie na tej tabelce nie stworzylem zadnego > indeksu, tak by PostgreSQL posortowal dane nie korzystajac z indeksu. > Gdyby tfield byl primary key'em oczywiscie Query Plan wygladal by zupelnie > inaczej :). > > Artur
Mi?ej lektury: http://www.postgresql.org/docs/8.2/i...g-explain.html
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[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.pldoc.pisz.plpdf.pisz.pllunadance.htw.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 |
|