How to speed up delete where not in

Поиск
Список
Период
Сортировка
Искать
От
Andrus
Тема
How to speed up delete where not in
Дата
Msg-id
27AEE5B582104F02837FFC7EDF86DA23@dell2
Ответ на
Список
Дерево обсуждения
Converting char to varchar automatically "Andrus" <kobruleht2@hot.ee>
Re: Converting char to varchar automatically Andy Colson <andy@squeakycode.net>
How to use record variable with non-null domain in plpgsql "Andrus" <kobruleht2@hot.ee>
Re: How to use record variable with non-null domain in plpgsql Tom Lane <tgl@sss.pgh.pa.us>
How to speed up delete where not in "Andrus" <kobruleht2@hot.ee>
Re: How to speed up delete where not in David Rowley <david.rowley@2ndquadrant.com>
How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Ynt: How to drop user if objects depend on it Neslisah Demirci <neslisah.demirci@markafoni.com>
Re: Ynt: How to drop user if objects depend on it Jerry Sievers <gsievers19@comcast.net>
Re: How to drop user if objects depend on it Thom Brown <thom@linux.com>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Adrian Klaver <adrian.klaver@aklaver.com>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Tom Lane <tgl@sss.pgh.pa.us>
Re: How to drop user if objects depend on it Tom Lane <tgl@sss.pgh.pa.us>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Tom Lane <tgl@sss.pgh.pa.us>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Tom Lane <tgl@sss.pgh.pa.us>
How to get correct local time "Andrus" <kobruleht2@hot.ee>
Re: How to get correct local time Vitaly Burovoy <vitaly.burovoy@gmail.com>
Re: How to get correct local time Vitaly Burovoy <vitaly.burovoy@gmail.com>
Re: How to get correct local time Adrian Klaver <adrian.klaver@aklaver.com>
How to use row values as function parameters "Andrus" <kobruleht2@hot.ee>
Re: How to use row values as function parameters Adrian Klaver <adrian.klaver@aklaver.com>
Re: How to use row values as function parameters "David G. Johnston" <david.g.johnston@gmail.com>
Re: How to use row values as function parameters "Andrus" <kobruleht2@hot.ee>
Re: How to use row values as function parameters Adrian Klaver <adrian.klaver@aklaver.com>
Re: How to use row values as function parameters "David G. Johnston" <david.g.johnston@gmail.com>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Adrian Klaver <adrian.klaver@aklaver.com>
Re: How to drop user if objects depend on it Melvin Davidson <melvin6925@gmail.com>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Melvin Davidson <melvin6925@gmail.com>
Re: How to drop user if objects depend on it "Andrus" <kobruleht2@hot.ee>
Re: How to drop user if objects depend on it Melvin Davidson <melvin6925@gmail.com>
Re: How to speed up delete where not in Melvin Davidson <melvin6925@gmail.com>
Re: How to use record variable with non-null domain in plpgsql "Andrus" <kobruleht2@hot.ee>
Re: Converting char to varchar automatically Melvin Davidson <melvin6925@gmail.com>
Re: Converting char to varchar automatically "Andrus" <kobruleht2@hot.ee>
Re: Converting char to varchar automatically "Andrus" <kobruleht2@hot.ee>
Re: Converting char to varchar automatically Melvin Davidson <melvin6925@gmail.com>
Re: Converting char to varchar automatically "Andrus" <kobruleht2@hot.ee>
Re: Converting char to varchar automatically Melvin Davidson <melvin6925@gmail.com>
Re: Converting char to varchar automatically "Andrus" <kobruleht2@hot.ee>
Re: Converting char to varchar automatically Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Converting char to varchar automatically "Andrus" <kobruleht2@hot.ee>
Hi!


I'm looking for a way to delete records which do not have child rows on big 
tables where lot of rows needs to be deleted. Both tables have lot of other 
foreign key references.


Document headers are in omdok table:

    create table omdok ( dokumnr serial primary key, ... );

Document rows are in omrid table

    CREATE TABLE omrid
    (
      id serial NOT NULL,
      reanr serial NOT NULL,
      dokumnr integer NOT NULL,
      CONSTRAINT omrid_pkey PRIMARY KEY (id),
      CONSTRAINT omrid_dokumnr_fkey FOREIGN KEY (dokumnr)
          REFERENCES omdok (dokumnr) MATCH SIMPLE
          ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY 
IMMEDIATE,
      ....
    );


I tried

    delete from omdok where dokumnr not in      (select dokumnr from omrid)

Query it is running currently 15 hours and is still running.
postgres.exe is using 50% CPU  all the time (this is 2 core CPU).

    explain delete from omdok where dokumnr not in      (select dokumnr from 
omrid)

returns:

    "Delete  (cost=0.00..21971079433.34 rows=220815 width=6)"
    "  ->  Seq Scan on omdok  (cost=0.00..21971079433.34 rows=220815 
width=6)"
    "        Filter: (NOT (SubPlan 1))"
    "        SubPlan 1"
    "          ->  Materialize  (cost=0.00..94756.92 rows=1897261 width=4)"
    "                ->  Seq Scan on omrid  (cost=0.00..77858.61 
rows=1897261 width=4)"

- How to delete parents without child rows fast?
- Will this command finish or is postgres hanging ?
- Currently it is running 15 hours. How many hours it takes to finish ?
How to speed up this query ?


Using

    PostgreSQL 9.0.1, compiled by Visual C++ build 1500, 64-bit

    Windows 2003 x64 server with 4 GB RAM.


Posted also in

http://stackoverflow.com/questions/32794828/how-to-speed-up-deleting-documents-without-rows

Andrus. 


В списке pgsql-general по дате отправления
От: Thomas Kellerer
Дата:
От: David Rowley
Дата:
FAQ