Re: delete operation with "where XXX in"

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: delete operation with "where XXX in"
Дата
Msg-id 27549.1032803782@sss.pgh.pa.us
обсуждение исходный текст
Ответ на delete operation with "where XXX in"  ("Peter Alberer" <h9351252@obelix.wu-wien.ac.at>)
Ответы Re: delete operation with "where XXX in"  ("Peter Alberer" <h9351252@obelix.wu-wien.ac.at>)
Список pgsql-general
"Peter Alberer" <h9351252@obelix.wu-wien.ac.at> writes:
> The following query takes quite long:
> delete from lr_object_usage where lr_object_usage_id in (
>     select lr_object_usage_id from lr_locked_objects where timeout_time
> < now() and context is not null
> );

> to get the rows I want to delete into a select query I can simply use

> select * from lr_object_usage lrou inner join lr_locked_objects llo
> on llo.lr_object_usage_id = lrou.lr_object_usage_id
> where llo.timeout_time < now() ;

> But how can i rephrase the delete operation to get a fast delete
> operation?

If you don't mind a nonstandard query you can write

delete from lr_object_usage where
lr_locked_objects.lr_object_usage_id = lr_object_usage_id
and lr_locked_objects.timeout_time < now() ;

A difficulty with this is you can't use any alias names, but
except for cases involving self-joins you don't really need 'em.

            regards, tom lane

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

Предыдущее
От: "Peter Alberer"
Дата:
Сообщение: delete operation with "where XXX in"
Следующее
От: "Dan Ostrowski"
Дата:
Сообщение: Different Port for PostgreSQL?