Dotaz na optimalizaci - indexy
Ing. Pavel Janousek
Janousek na FoNet.Cz
Pátek Červen 20 14:03:00 CEST 2003
Dobry den,
dneska mne datove modelovani pekne vypeklo a uz se nevim rady...
Mam nasledujici model:
table A (id, cas, ostatni atributy)
table B (id, ostatni atributy)
Table A se plni v case postupne daty, table B se plni tak, ze
jednou za cas (pravidelne) se prochazi table A a pokud obsahuje ID,
ktere neni v table B, tak se radek zpracuje (= v table B vznikne dalsi
radek).
Jiz drive jsem provedl optimalizaci v tom smyslu, ze se prochazi
data jen od urciteho data (cas=now()).
Co mne vsak dostalo, tak tento dotaz:
select id, ... from TableA where id not in (select id from TableB) and
(now() - cas) < 3000000 order by cas desc;
Ta konstanta (3000000) odpovida zhruba 3 mesicum (aspon si to
tak myslim/pamatuju).
Resim optimalizaci na PostgreSQL - explain v zakladni podobe
povi:
NOTICE: QUERY PLAN:
Sort (cost=6087160.84..6087160.84 rows=4377 width=44)
-> Seq Scan on TableA (cost=0.00..6086896.15 rows=4377 width=44)
SubPlan
-> Seq Scan on TableB (cost=0.00..463.51 rows=21251 width=4)
Chapu, ze spatne jsou ty sekvencni pruchody - ovsem to i na PIV
1.6GHz neni zanedbatelne pri nasledujicim zaplneni (zpracovani je
desitky minut) - explain vyse je na techto datech:
Table A - 27 tisic zaznamu
Table B - 21 tisic zaznamu
Takze jsem si zacal hrat s indexy, zkousel jsem indexovat jak
samotne id v obou tabulkach, tak slozeny index z id+cas v tabulce 1.,
presto planovac a PostgreSQL backend neni stale ochoten pouzit zadne
tyto "donucovaci" prostredky pro optimalni praci...
Domnivam se, ze podobna situace neni neuveritelna konstrukce,
ale ze podobnych pripadu je v praxi daleko vice, jak to resite v praxi
Vy? Pripadne, co by mohlo pomoci? (datovy model - tabulky - menit
nelze...)
-------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft) FoNet, spol. s r. o.
Technicka podpora, Intranet/Internet Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz Tel.: +420 5 4324 4749
WWW: http://WWW.FoNet.Cz/ E-mail: mailto:Info na FoNet.Cz
-------------------------------------------------------------------
Další informace o konferenci Test