From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | Andreas Kretschmer <akretschmer(at)despammed(dot)com> |
Cc: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: Frage zu SQL |
Date: | 2005-07-04 14:27:10 |
Message-ID: | 200507041627.11072.peter_e@gmx.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Andreas Kretschmer wrote:
> select a.kunde, case when a.typ = 'K' then a.wert when a.typ = 'D'
> then NULL END as kredit, case when a.typ = 'K' then NULL when a.typ =
> 'D' then a.wert END as debit, a.ts,
> sum(get_saldo(a.typ, a.wert))
> from konten a, konten b
> where b.ts <= a.ts
> group by a.kunde, kredit, debit, a.ts
> order by a.ts;
> Klappt. Aber, bei einigen tausen Datensätzen, dauert es *EWIG*.
> (12000 Sätze, Abbruch nach ca. 1 Stunde warten...)
Ich verstehe die Bedeutung dieser Join-Bedingung b.ts <= a.ts nicht. Das
ergibt, und jetzt lehn ich mich mathematisch mal aus dem Fenster, glaub
ich N*(N+1)/2 Datensätze, also hier rund 72 Millionen, was bei deiner
Tabellenstruktur mindestens 5 GB Speicher entspricht, die dann schön
sortiert und gruppiert werden müssen. Das würde ich also nochmal
überdenken.
--
Peter Eisentraut
http://developer.postgresql.org/~petere/
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Kretschmer | 2005-07-04 14:52:45 | Re: [despammed] Re: Frage zu SQL |
Previous Message | Andreas Kretschmer | 2005-07-04 14:12:23 | Frage zu SQL |