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 |
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 |