PostgreSQL wymuszenie IndexScan
Krzysztof - 14-12-2006 16:09
PostgreSQL wymuszenie IndexScan
Witam Spotka?em si? z problemem wymuszenia skanowania po indeksie wewn?trz transakcji.
BEGIN; INSERT INTO transakcje (transakcja_id, datatransakcji ) VALUES (nextval('transakcja_id_seq'), now() );
EXPLAIN ANALYZE SELECT transakcja_id, datatransakcji FROM transakcje WHERE transakcja_id =currval('transakcja_id_seq');
END;
Powy?sze wyra?enie wyszukuje poprzez filtrowanie wyniku skanu sekwencyjnego
Seq Scan on transakcje (cost=100000000.00..100169224.90 rows=1 width=12) (actual time=30136.195..30161.270 rows=1 loops=1) Filter: (transakcja_id = currval('transakcja_id_seq'::regclass)) Total runtime: 30161.388 ms (3 rows)
Dodam tylko, ?e identyczne polecenie przy zdefiniowaniu np. transakcja_id=11108 wykorzystuje indeks scan i trwa poni?ej milisekundy.
Próbowa?em wymusza? blokad? skanowania sekwencyjnego SET enable_seqscan TO off; SET enable_indexscan TO on; nic nie pomog?o.
Macie mo?e jaki? pomys? w jaki sposób wymusi? skanowanie po indeksie ? Column | Type | Modifiers --------------+----------------------------- transakcja_id | integer | not null default nextval('transakcja_id_seq'::regclass)
datatransakcji| timestamp with time zone not null default now() Indeksy: transakcje_idx PRIMARY KEY, btree (transakcja_id)
Pozdrawiam Krzysztof
hubert depesz lubaczewski - 14-12-2006 16:09
On 2006-12-08, Krzysztof <piornik@friko3.onet.pl> wrote: > Spotka?em si? z problemem wymuszenia skanowania po indeksie wewn?trz > transakcji.
napisz mo?e po co ci to jest potrzebne, co dok?adnie chcesz uzyska? i której wersji postgresa u?ywasz.
depesz
-- http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz
Ronald Kuczek - 14-12-2006 16:09
Krzysztof napisa?(a): > Witam > Spotka?em si? z problemem wymuszenia skanowania po indeksie wewn?trz > transakcji. > > BEGIN; > INSERT INTO transakcje (transakcja_id, datatransakcji ) > VALUES (nextval('transakcja_id_seq'), now() ); > > EXPLAIN ANALYZE SELECT transakcja_id, datatransakcji FROM transakcje > WHERE transakcja_id =currval('transakcja_id_seq'); > > END; > Spróbuj rzutowa? currval('transakcja_id_seq') na int4.
Pozdrawiam Rony
hubert depesz lubaczewski - 24-12-2006 00:37
On 2006-12-08, Krzysztof <piornik@friko3.onet.pl> wrote: > EXPLAIN ANALYZE SELECT transakcja_id, datatransakcji FROM transakcje > WHERE transakcja_id =currval('transakcja_id_seq');
where transakcja_id = (select currval('transakcja_id_seq')); i będzie ok.
depesz
-- http://www.depesz.com/ -> nowy, jeszcze lepszy, depesz
Krzysztof - 24-12-2006 00:37
hubert depesz lubaczewski napisał(a): > On 2006-12-08, Krzysztof <piornik@friko3.onet.pl> wrote: >> EXPLAIN ANALYZE SELECT transakcja_id, datatransakcji FROM transakcje >> WHERE transakcja_id =currval('transakcja_id_seq'); > > where transakcja_id = (select currval('transakcja_id_seq')); > i będzie ok.
Dzieki za pomoc. Wprowadzilem funkcje dodawania rekordu na serwer, ktora zwraca currval . Potem na tej podstawie wyciagam pole datatransakcji.
Powyzszy sposob jest bardzo interesujacy.
Pozdrawiam Krzysztof
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.plnocnerozmowy.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 |
|