Re: BUG #14399: Order by id DESC causing bad query plan

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: BUG #14399: Order by id DESC causing bad query plan
Дата
Msg-id CAKFQuwY=54PRU1rwU86xaQMnL+5HfDngJr5=2HpZ1QyDQYDfVg@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #14399: Order by id DESC causing bad query plan  (jkoceniak@mediamath.com)
Ответы Re: BUG #14399: Order by id DESC causing bad query plan  (Jamie Koceniak <jkoceniak@mediamath.com>)
Список pgsql-bugs
On Thu, Oct 27, 2016 at 5:16 PM, <jkoceniak@mediamath.com> wrote:

> The following bug has been logged on the website:
>
> Bug reference:      14399
> Logged by:          Jamie Koceniak
> Email address:      jkoceniak@mediamath.com
> PostgreSQL version: 9.4.6
> Operating system:   Linux
> Description:
>
> One table has 2M records (orders) joining to another table with 75K recor=
ds
> (customers).
>
> Query:
> select *  FROM
>           orders t1
>           JOIN customer t2 ON (t1.customer_id =3D t2.id)

        WHERE
>           t2.id IN (select distinct customer_id from valid_customers)

        ORDER BY t1.id
>         LIMIT 10 ;
>

=E2=80=8BBug potential aside the better way to write =E2=80=8Bthat is to us=
e a proper
semi-join (i.e., EXISTS)

SELECT *
FROM order t1
JOIN customer t2 ON (t1.customer_id =3D t2.id)
WHERE EXISTS (SELECT 1 FROM valid_customers t3 WHERE t3.customer_id =3D t2.=
id)
ORDER BY t1.id
LIMIT 10;

Note too that your query plan has a "function scan" node unlike what your
query implies...

Sorry I can't be of more help with the information you've provided.

David J.

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

Предыдущее
От: jkoceniak@mediamath.com
Дата:
Сообщение: BUG #14399: Order by id DESC causing bad query plan
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #14408: Schema not found error when 2 or more indices declared on temporary table