Re: rewrite in to exists?

Поиск
Список
Период
Сортировка
От Christopher Kings-Lynne
Тема Re: rewrite in to exists?
Дата
Msg-id 08cd01c37da5$04cd5ff0$2800a8c0@mars
обсуждение исходный текст
Ответ на rewrite in to exists?  (LN Cisneros <lnsea@earthlink.net>)
Ответы Re: rewrite in to exists?  (Manfred Koizar <mkoi-pg@aon.at>)
Список pgsql-performance
> I'm on 7.3.4 and this query gets horrible performance.  Is there a way to
rewrite it with an exists or some way to get better performance?
>
> select code, id, name, date_of_service
>   from tbl
> where date_of_service in
>       (select date_of_service
>          from tbl
>         where xxx >= '29800'
>           and xxx <= '29909'
>           and code = 'XX')
>   and client_code = 'XX'
> order by  id, date_of_service;

????

Why can't you just go:

select code, id, name, date_of_service from tbl where xxx <= 29800 and xx >=
29909 and code='XX' and client_code='XX' order by id, date_of_service;

Or use a between clause is nice:

select code, id, name, date_of_service from tbl where xxx between 29800 and
29909 and code='XX' and client_code='XX' order by id, date_of_service;

But seriously - your query above is referencing 'tbl' twice - is that
correct, or is the tbl in the subselect supposed to be something different?

Chris


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

Предыдущее
От: LN Cisneros
Дата:
Сообщение: rewrite in to exists?
Следующее
От: "Alexander Priem"
Дата:
Сообщение: Many fields in one table or many tables?