Sub-select problem (or bug?)

Поиск
Список
Период
Сортировка
От Mark Dalphin
Тема Sub-select problem (or bug?)
Дата
Msg-id 35DA49C1.9D1B536C@sanger.otago.ac.nz
обсуждение исходный текст
Список pgsql-sql
Hi,

I am having problems with the sub-select in PostgreSQL.  As I have not
tried to use these before, I am not sure if the problem is with me, SQL
or PostgreSQL.

I have two tables:

CREATE TABLE tab1 (
        locus char16,
        shortname char8
        -- lots of other data ...
);

-- This table flags some loci in tab1 as having errors.
CREATE TABLE tab2 (
        id oid,     -- foreign key into TABLE tab1
        errno int4  -- An error indicator
);

If I say:
        SELECT * FROM tab1 WHERE shortname='AciSPP';
I retrieve 36 rows out of ~100,000 in seconds.  This is okay.

If I say:
        SELECT id, locus, errno
        FROM tab1, tab2
        WHERE tab1.oid=tab2.id
                AND shortname='AciSPP';

I retrieve 22 rows out of the 100,000 in tab1 and 80,000 in tab2 in much
less than a minute. This is also okay or even good!  :-)

Now, assume I wish to remove all traces of 'AciSPP' from my database.
I need to remove those from within TABLE tab2 first. I tried this:
        DELETE FROM tab2
        WHERE id in (SELECT oid FROM tab1 WHERE shortname='AciSPP');

This DELETE runs for over an hour and nothing happens. Except that the
CPU usage runs very high.

Am I doing this delete correctly?  Is there some aspect of sub-selects
(or 'IN') that I don't understand? Or is this a bug in the sub-selects.
I saw a note in the archives from last May suggesting something may be
wrong with sub-selects (or that they were slow), but it looked as though
that was dependent on the sub-select containing a regular-expression
search.

System is:
        PostgreSQL 6.3.2 on a Dec Alpha running Digital UNIX.

Thanks for your help,
Mark Dalphin

--
Dr. Mark Dalphin                     e-mail: mdalphin@sanger.otago.ac.nz
Dept. of Biochemistry                 phone: +64 03 479-7841
University of Otago                     FAX: +64 03 479-7866
Dunedin, New Zealand

В списке pgsql-sql по дате отправления:

Предыдущее
От: Toni Steinhauer
Дата:
Сообщение: Cannot read block 0
Следующее
От: "Ivan Kirillov"
Дата:
Сообщение: CASE and functions are not working