sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql pomalé mazání z místa, kde existuje

Odstranění 3,7 milionu řádků je velmi časově náročné, protože je nutné vyhledat každý řádek a poté řádky protokolovat a mazat. Už jen pomyšlení na všechny ty špinavé stránky, protokolování a vynechání mezipaměti je ohromující – nemluvě o aktualizacích indexů.

Z toho důvodu může být něco takového mnohem rychlejší:

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;

Také byste měli indexy před zkrácením zrušit a poté je znovu vytvořit.



  1. Co je nového v MySQL Galera Cluster 4.0

  2. Výjimka hibernace Dotaz nebyl správně ukončen

  3. Spring Boot, chyba JPA:Chyba při provádění DDL prostřednictvím příkazu JDBC

  4. Návrh databáze pro komentáře a odpovědi