Problem with SQL query (eats swap)

Поиск
Список
Период
Сортировка
От pgsql-sql@ruby.sartorelli.gen.nz (Mailing List Expander)
Тема Problem with SQL query (eats swap)
Дата
Msg-id m13N4px-003bmOC@ruby.sartorelli.gen.nz
обсуждение исходный текст
Ответы Re: Problem with SQL query (eats swap)  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
Hi, I have two tables into which I dump mail statistics.  The two tables are:

create table attachments ( id text, attachment text
);
create table mail ( id text, size int, whofrom text, subject text, date datetime, inout char
);

The table mail holds information about each mail message.  The table attachments holds the name of any attachments.
Linkingthe attachment(s) and the message is the id.
 

I want to delete all records relating to mail that is over two months old.  I tried:

select count(*) from attachments a where a.id in (select m.id from mail m where m.date < now()-62);

but ran out of swap.  The mail table is 19Mb, the attachment one 1Mb.  I was up to 380Mb of swap used on a machine with
128MbRAM, and over 15 minutes run time.  At that point I killed the query.
 

I next tried is as follows:

drop table temp;
select id into temp from mail where date < now()-62;
delete from attachments where id in (select id from temp);
delete from mail where date < now()-62;

This worked fine and deleted the records as intended in a few minutes.  Can anyone see why the initial query ate so
muchswap?
 


Cheers
Kevin
kevin@sartorelli.gen.nz


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

Предыдущее
От: Mark Volpe
Дата:
Сообщение: Re: Rules aren't doing what I expect
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Rules aren't doing what I expect