You should rewrite your query using NOT EXISTS:
insert into LTable
select * from STable
where NOT EXISTS (
SELECT L.ID FROM LTable L
WHERE L.ID = ID);
This will use an index scan on LTable. This is also a FAQ item BTW.
Hope that helps,
Mike Mascari
mascarm@mascari.com
-----Original Message-----
From:    Igor [SMTP:dbmanager@osb368.nnov.ru]
Sent:    Saturday, April 14, 2001 12:33 AM
To:    pgsql-general@postgresql.org
Subject:    [GENERAL] Very slow query, Help please!
Hi !
Help me please to resolv my problem.
I have two tables . One of them is large (say 100000 records)
with unique index on "ID"
and the second table (5000 records ) which i have to insert
into the first table , but the second table have much records,
which have many duplicate values in "ID" . and this is
the query which i used for insertion:
  insert into LTable select * from STable
    where ID not in (select ID from LTable )
this query takes much time. and moreover - for big tables
i couldn't got result of query for about an hour, it looks
like so that it is die...
May be there is anoter way for insertion ?
Thanks for any suggestion!
Igor
---------------------------(end of
broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to
majordomo@postgresql.org