Dotaz na optimalizaci - indexy
Michal Měšťan
mestan na zce.cz
Pátek Červen 20 15:29:21 CEST 2003
Ing. Pavel Janousek wrote:
> 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;
>
Nemohlo by fungovat cosi takového? Teda pokud by se oželelo seřazení
výsledku podle času nebo to seřadit až pak.
SELECT id, ... from TableA WHERE (now() - cas) < 3000000 EXCEPT SELECT
id, ... from TableB (now() - cas) < 3000000;
nebo
SELECT id, ... from TableA WHERE (now() - cas) < 3000000 EXCEPT ALL
SELECT id, ... from TableB (now() - cas) < 3000000;
>
> 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...)
>
>
Měšťan
Další informace o konferenci Databases