PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgresql powolne usuwanie z miejsca, w którym istnieje

Usuwanie 3,7 miliona wierszy jest bardzo czasochłonne ze względu na narzut związany z wyszukiwaniem każdego wiersza, a następnie rejestrowaniem i usuwaniem wierszy. Samo myślenie o wszystkich brudnych stronach, logowaniu i błędach w pamięci podręcznej jest oszałamiające – nie wspominając o aktualizacjach indeksów.

Z tego powodu coś takiego może być znacznie szybsze:

create temporary table temp_n2p as 
    select n2p.*
    from "target".name2phoneme n2p
    where not exists (select 1
                      from delta.name2phoneme d 
                      where n2p.NAME_ID = d.NAME_ID and
                            n2p.PHONEME_ID = d.PHONEME_ID
                     );

truncate table "target".name2phoneme;

insert into "target".name2phoneme
    select *
    from temp_n2p;

Powinieneś także usunąć indeksy przed obcięciem, a następnie odtworzyć je później.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmienne dla identyfikatorów wewnątrz IF EXISTS w funkcji plpgsql

  2. Zadanie cron do usuwania starych danych z postgres na debianie

  3. percentyle z danych histogramowych

  4. Psycopg2 nie lubi nazw tabel zaczynających się od małej litery

  5. Railsy + błędy PostGIS przy migracji bazy danych