sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgresql langsom sletning, hvorfra den findes

Sletning af 3,7 millioner rækker er meget tidskrævende, på grund af omkostningerne ved at slå op i hver række og derefter logge og slette rækkerne. Bare det at tænke på alle de beskidte sider, logning og cache-misser er ufatteligt – for ikke at nævne opdateringer til indekserne.

Af den grund kan noget som dette være meget hurtigere:

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;

Du bør også droppe indekserne før trunkeringen og derefter genskabe dem bagefter.



  1. hvordan indsætter man en enorm fil i BLOB (Oracle) uden at indlæse hele filen i hukommelsen?

  2. Hvordan tæller man antallet af ikke-konsekutive værdier i en kolonne ved hjælp af SQL?

  3. Hvordan kan jeg indsætte værdier i databasen (mySql) ved hjælp af cpp-programmet?

  4. Forskellen mellem at tilføje parametre til lagret procedure i SQL Server?