Re: Speedy query help..
От | Tom Lane |
---|---|
Тема | Re: Speedy query help.. |
Дата | |
Msg-id | 24281.955409135@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Speedy query help.. ("Mitch Vincent" <mitch@venux.net>) |
Список | pgsql-sql |
"Mitch Vincent" <mitch@venux.net> writes: > Any ideas on how I might speed this up? I know sub-selects are seriously > slow, I'm not sure what else can be done though. > DELETE from applicants_states WHERE app_id IN (SELECT s.app_id FROM > applicants_states AS s, applicants AS a WHERE s.app_id=a.app_id AND > (a.created + '90 days') < 'now' AND a.resubmitted < '10-03-1999') I believe you'd get the same result from DELETE FROM applicants_states WHERE app_id = applicants.app_id AND (applicants.created + '90 days') < 'now' AND applicants.resubmitted < '10-03-1999'; This is not SQL-standard; doing an implicit join when you mention another table in WHERE is a leftover from Berkeley Postquel. But it solves this sort of problem rather handily. If you want to stick to portable SQL, I'd at least suggest getting rid of the unnecessary join in the subselect; wouldn't DELETE from applicants_states WHERE app_id IN (SELECT app_id FROM applicants WHERE (created + '90 days') < 'now' ANDresubmitted < '10-03-1999'); produce the same results? Also, 7.0 does uncorrelated subselects (like this one) somewhat faster than prior releases, so just upgrading might solve the problem for you. regards, tom lane
В списке pgsql-sql по дате отправления: