PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgresql бавно изтриване от където съществува

Изтриването на 3,7 милиона реда отнема много време, поради режийните разходи за търсене на всеки ред и след това регистриране и изтриване на редовете. Само като си помисля за всички мръсни страници, логване и пропуски в кеша е умопомрачително -- да не говорим и за актуализациите на индексите.

Поради тази причина нещо подобно може да бъде много по-бързо:

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;

Трябва също така да премахнете индексите преди отрязването и след това да ги създадете отново след това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извършвате операции за актуализиране на колони от тип JSONB в Postgres 9.4

  2. Django OperationalError:не можа да разклони нов процес за свързване

  3. PG::ConnectionBad:ФАТАЛНО:неуспешно удостоверяване на парола за потребител alphauser

  4. Задействане на Postgres след вмъкване при достъп до НОВО

  5. Изберете (извлечете) всички записи от множество схеми с помощта на Postgres