Andreas Kretschmer <[email protected]> wrote:
> > 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);

sorry, das war mein Fehler. Das mit der WITH - Syntax geht so:

with xxx as (... returning *) select ... from xxx


Ich hatte, das war mein Fehler, den Du brav übernommen hast, im select
wieder die originale Tabelle, nicht das, was via WITH xxx in der nun
temp. Tabelle xxx steht. Siehst noch durch?

Passiert halt, wenn es schnell gehen soll...


Du kannst auch solche Dinge damit machen:

with
  x1 as (select ....),
  x2 as (delete from ... returning *),
  x3 as (update ... )
select * from x1 left join x2 on ... left join x3 on ...


Oder, was auch sehr nützlich ist, bei Inserts in Tabellen, wo ein Key
generiert wird, den Du im zweiten Insert dann brauchst. Läßt sich so
alles in einem Befehl schreiben, damit nur ein mal Applikation -> DB,
nur ein mal für die DB einen Plan erstellen etc. kann durchaus
Performance bringen.



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°

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an