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
|
Список | 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 по дате отправления: