Mi piacerebbe spostare alcuni dati da una tabella a un'altra (con uno schema forse diverso). soluzione semplice che viene in mente è -sposta i dati da una tabella a un'altra, edizione postgresql
start a transaction with serializable isolation level;
INSERT INTO dest_table SELECT data FROM orig_table,other-tables WHERE <condition>;
DELETE FROM orig_table USING other-tables WHERE <condition>;
COMMIT;
Ora, cosa succede se la quantità di dati è piuttosto grande, e la <condition>
è costoso per calcolare? In PostgreSQL, è possibile utilizzare una regola o una stored procedure per eliminare i dati al volo, valutando le condizioni una sola volta. Quale soluzione è migliore? Ci sono altre opzioni?
Ho fatto un po 'di elaborazione test grandi quantità di dati utilizzando i trigger, riga per riga e utilizzando una stored procedure con una singola transazione. L'approccio alla stored procedure era più veloce. – pcent
Dovresti anche ottimizzare il tuo server PostgreSQL per migliorare le prestazioni. Leggi: http://wiki.postgresql.org/wiki/Performance_Optimization – pcent
yah, penso che le linee guida dovrebbero essere qualificate per affermare che una COPIA è più veloce di un insieme di istruzioni INSERT, una per riga. INSERISCI ... SELEZIONA per copiare i dati in giro penso che sia ottimale dato che i dati non vengono passati all'esterno dell'esecutore. – araqnid