Chciałbym przenieść niektóre dane z jednej tabeli do drugiej (z możliwym innym schematem). Proste rozwiązanie, które przychodzi do głowy to -przenoszenie danych z jednej tabeli do drugiej, edycja 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;
Teraz co, jeśli ilość danych jest dość duży, a <condition>
jest drogie, aby obliczyć? W PostgreSQL, reguła lub procedura składowana może być używana do usuwania danych w locie, oceniając warunek tylko raz. Które rozwiązanie jest lepsze? Czy są inne opcje?
Zrobiłem kilka testów przetwarzanie duże ilości danych za pomocą wyzwalaczy, wiersz po wierszu i za pomocą procedury składowanej z pojedynczej transakcji. Podejście do procedury przechowywanej było szybsze. – pcent
Powinieneś również dostroić swój serwer PostgreSQL, aby zwiększyć wydajność. Przeczytaj: http://wiki.postgresql.org/wiki/Performance_Optimization – pcent
yah, myślę, że wytyczne powinny kwalifikować się do stwierdzenia, że jedna kopia jest szybsza niż zestaw instrukcji INSERT, po jednym w wierszu. INSERT ... SELECT do kopiowania danych w okolicy byłoby optymalne, ponieważ dane nie są przekazywane poza executorem. – araqnid