Re: langsame "NOT IN" Subquery

From: Thomas Markus <t(dot)markus(at)proventis(dot)net>
To: "Steubesand, Thomas" <T(dot)Steubesand(at)rz(dot)fh-trier(dot)de>, "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: langsame "NOT IN" Subquery
Date: 2007-07-18 13:24:45
Message-ID: 469E149D.3050000@proventis.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hi,

bei sowas hat sich folgendes als schneller erwiesen:

select
id
from
table1 a left join table2 b on a.id = b.t1_id
where
b.id is null

Gruss
Thomas

Steubesand, Thomas schrieb:
> Hallo zusammen,
>
> folgende Aufgabenstellung:
>
> Vorhanden sind 2 Tabellen mit 200.000 (table1) und
> 150.000 (table2) Datensätzen.
>
> Schema:
> CREATE table1
> (
> id SERIAL,
> ...
> PRIMARY KEY(id)
> );
>
> CREATE table2
> (
> ...
> t1_id ÎNTEGER, -- kein foreign key!
> ...
> );
>
> CREATE INDEX i1 ON table2(t1_id);
>
> Es sollen ALLE Datensätze aus table1 herausgefunden werden,
> die KEINEN entsprechenden Datensatz in der table2 haben:
>
> SELECT table1.id, ...
> FROM table1
> WHERE
> ...
> table1.id NOT IN (SELECT table2.t1_id FROM table2);
>
> Wenn ich dieses SQL-Kommando absetze, läuft es ziemlich lange -
> länger als 30 Minuten habe ich bisher noch nicht gewartet.
> Warum ist solch ein Kommando so zeitintensiv unter PostgreSQL 8.1.2
> (Unix) und unter 8.2.3 (XP)?
>
> Ein
>
> SELECT table1.id FROM table1
> EXCEPT
> SELECT table2.t1_id FROM table2;
>
> benötigt 5 bis 6 Sekunden.
>
> Vielen Dank schon mal für Euere Hilfe
>
> Thomas
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>

--
Thomas Markus

Tel: +49 30 29 36 399 - 22
Fax: +49 30 29 36 399 - 50
Mail: t(dot)markus(at)proventis(dot)net
Web: http://www.proventis.net
Web: http://www.blue-ant.de

proventis GmbH
Zimmerstraße 79-80
10117 Berlin

Geschäftsführer: Norman Frischmuth
Sitz: Berlin
Handelsregister: AG Berlin-Charlottenburg, HR 82917

We support your project business!

Attachment Content-Type Size
t.markus.vcf text/x-vcard 255 bytes

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Bernd Helmle 2007-07-18 14:24:11 Re: Komplette Datenbank auf anderen Rechner
Previous Message A. Kretschmer 2007-07-18 13:21:16 Re: langsame "NOT IN" Subquery