pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Torsten Zühlsdorff <foo@meisterderspiele.de>
To: pgsql-performance@postgresql.org
Subject: How to insert a bulk of data with unique-violations very fast
Date: Tue, 01 Jun 2010 17:03:48 +0200
Message-ID: <hu37gm$qrl$1@news.eternal-september.org> (raw)

Hello,

i have a set of unique data which about 150.000.000 rows. Regullary i 
get a list of data, which contains multiple times of rows than the 
already stored one. Often around 2.000.000.000 rows. Within this rows 
are many duplicates and often the set of already stored data.
I want to store just every entry, which is not within the already stored 
one. Also i do not want to store duplicates. Example:

Already stored set:
a,b,c

Given set:
a,b,a,c,d,a,c,d,b

Expected set after import:
a,b,c,d

I now looking for a faster way for the import. At the moment i import 
the new data with copy into an table 'import'. then i remove the 
duplicates and insert every row which is not already known. after that 
import is truncated.

Is there a faster way? Should i just insert every row and ignore it, if 
the unique constrain fails?

Here the simplified table-schema. in real life it's with partitions:
test=# \d urls
                          Tabelle »public.urls«
  Spalte |   Typ   |                       Attribute
--------+---------+-------------------------------------------------------
  url_id | integer | not null default nextval('urls_url_id_seq'::regclass)
  url    | text    | not null
Indexe:
     »urls_url« UNIQUE, btree (url)
     »urls_url_id« btree (url_id)

Thanks for every hint or advice! :)

Greetings from Germany,
Torsten
-- 
http://www.dddbl.de - ein Datenbank-Layer, der die Arbeit mit 8 
verschiedenen Datenbanksystemen abstrahiert,
Queries von Applikationen trennt und automatisch die Query-Ergebnisse 
auswerten kann.



view thread (13+ messages)  latest in thread

Message-ID: <hu37gm$qrl$1@news.eternal-september.org>
Permalink:  ../hu37gm$qrl$1@news.eternal-september.org/
Also on:    postgresql.org/message-id/hu37gm$qrl$1@news.eternal-september.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: foo@meisterderspiele.de
  Subject: Re: How to insert a bulk of data with unique-violations very fast
  In-Reply-To: <hu37gm$qrl$1@news.eternal-september.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox