Ronny Seffner <[email protected]> wrote: > >Hier ist jetzt noch nicht das Einfügen mit drin - das Insert kannst Du > >aber vor ads Select machen. Deine Ursprungstabelle ist dann um die > >aggregierten Zeilen gekürzt - hier alle, da keine Where-Condition da > >war. > > > Zuerst das WHERE. Wenn mich nur die 16 Uhr Einträge interessieren: > > with move as (delete from acct where date_trunc('hour',stamp_inserted) = > '2014-12-23 16:00:00' returning *) select mac_src, mac_dst, ip_src, ip_dst, > port_src, port_dst, ip_proto, sum(packets), sum(bytes), > date_trunc('hour',stamp_inserted) from acct where > date_trunc('hour',stamp_inserted) = '2014-12-23 16:00:00' group by mac_src, > mac_dst, ip_src, ip_dst, port_src, port_dst, ip_proto, > date_trunc('hour',stamp_inserted); > > Und nun das INSERT dazu, weil ich die Daten ja zusammengeführt weiter nutzen > will. Bis hier her hab ich die vorgekaute Syntax sogar verstanden, aber
test=# select * from ronny;
s1 | s2 | ts | val
----+----+---------------------+-----
1 | 2 | 2014-12-23 10:00:01 | 10
1 | 2 | 2014-12-23 12:00:01 | 12
1 | 2 | 2014-12-23 13:00:03 | 22
(3 rows)
Time: 0,189 ms
test=*# create table ronny_ziel (s1 int, s2 int, ts timestamp, val int);
CREATE TABLE
Time: 15,266 ms
test=*# with move as (delete from ronny returning *) insert into
ronny_ziel select s1, s2, date_trunc('hour',ts), sum(val) from ronny
group by s1, s2, date_trunc('hour',ts);
INSERT 0 3
Time: 0,621 ms
test=*# select * from ronny;
s1 | s2 | ts | val
----+----+----+-----
(0 rows)
Time: 0,144 ms
test=*# select * from ronny_ziel ;
s1 | s2 | ts | val
----+----+---------------------+-----
1 | 2 | 2014-12-23 10:00:00 | 10
1 | 2 | 2014-12-23 12:00:00 | 12
1 | 2 | 2014-12-23 13:00:00 | 22
(3 rows)
Da hab ich das Insert in die ronny_ziel mit eingebaut.
>
>
> Die wiederholten date_trunc() und WHERE kostet nicht unnötig Ressourcen?
Nö.
>
>
> >Depends. Wenn der PK woanders als Foreign Key dienen sollte dann eher
> >nicht. Hinreichend aktuelle Versionen zeigen dies an:
> >
> v9.1.14 und kein "Referenced by". Was meinst Du zu den Indizes? Geschrieben
Ich hab grad noch mal geschaut, die Syntax mit dem WITH und der
Weiterverarbeitung von dem, was da rauskommt (nennt sich writeable
Common Table Expressions) wurde in 9.1 eingeführt, das sollte also
gehen.
Die Ausgabe in psql, welche Tabellen auf diese referenzieren, kam aber
glaube ich erst später, dabin ich mir nicht sicher.
> in die DB wird alle 5min, den Job zum Zusammenführen lass ich 1x stündlich
> laufen, wirklich reingucken in die Daten wird man zwei drei Mal im Monat.
Ach gott, aller 5 Minuten schreiben ist ja keine Last. Laß den Index
halt, wenn Du Dir nicht sicher bist.
>
> >Das sind alles so Dinge, die bei PG halt cool sind ...
> >
> Offenbar.
PG kann Dinge wo auch Oracle alt aussieht. DDL in Transaktionen kann
Oracle erst seit kurzem, PG schon immer. Exclusion Constraints kann
keine andere DB.
Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
signature.asc
Description: Digital signature
_______________________________________________ Lug-dd maillist - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
