sql >> データベース >  >> RDS >> PostgreSQL

Postgresqlが存在する場所からの遅い削除

    370万行の削除は、各行を検索してからログに記録して削除するオーバーヘッドがあるため、非常に時間がかかります。すべてのダーティページ、ロギング、およびキャッシュミスについて考えるだけで、気が遠くなるようなものになります。インデックスの更新も言うまでもありません。

    そのため、このようなものははるかに高速になる可能性があります:

    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. データベースの速度を大幅に低下させている6つの問題クエリ

    2. MariaDBで名前付きタイムゾーンを設定する方法

    3. 区切り文字列をmysqlで複数の値に変換する

    4. テーブル値パラメータをJavaからSQLServerストアドプロシージャに渡す方法は?