From: | Andreas Kretschmer <akretschmer(at)despammed(dot)com> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: [despammed] Re: Frage zu SQL |
Date: | 2005-07-04 14:52:45 |
Message-ID: | 20050704145245.GB31345@webserv.wug-glas.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
am 04.07.2005, um 16:27:10 +0200 mailte Peter Eisentraut folgendes:
> 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
ja, kann hinkommen, der explain sagte auch was in dieser Größenordnung.
Also, ich wollte ja die summen bis dahin erfassen, also grob so:
id | wert | summe
---------------------
1 | 5 | 5 (0+5)
2 | 10 | 15 (5+10)
3 | -2 | 13 (15-2)
> Tabellenstruktur mindestens 5 GB Speicher entspricht, die dann schön
> sortiert und gruppiert werden müssen. Das würde ich also nochmal
> überdenken.
mache ich. Mmmh, ich werd dann mal
www.varlena.com/varlena/GeneralBits/archive.php absuchen...
Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47212, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=== Schollglas Unternehmensgruppe ===
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2005-07-04 17:39:43 | Re: [despammed] Re: Frage zu SQL |
Previous Message | Peter Eisentraut | 2005-07-04 14:27:10 | Re: Frage zu SQL |