Thread: BUG #16377: select stuck when use order by and limit 1 if order-by-field has one index and result has no records
BUG #16377: select stuck when use order by and limit 1 if order-by-field has one index and result has no records
From
PG Bug reporting form
Date:
The following bug has been logged on the website: Bug reference: 16377 Logged by: Yunfeng Wang Email address: kingyzf@outlook.com PostgreSQL version: 11.6 Operating system: Centos 7.6 Description: select stuck when use order by and limit 1 if order-by-field has one index: and possibility is high if result has no records, otherwise possibility is low; if no "limit 1" or no index on column pay_date, no problem; sql: select * from (select ( case when pre_pay is null then 0 else pre_pay end ) as "PRE_PAY" from inpatientprepay where cancel='0' and ehrid=4 order by pay_date desc ) as t limit 1 ; other info: the inpatientprepay table has nine million records, I think it's stuck because if no limit 1 ,speed is ok;
Re: BUG #16377: select stuck when use order by and limit 1 iforder-by-field has one index and result has no records
From
Tomas Vondra
Date:
Hi, On Sat, Apr 18, 2020 at 10:04:05AM +0000, PG Bug reporting form wrote: >The following bug has been logged on the website: > >Bug reference: 16377 >Logged by: Yunfeng Wang >Email address: kingyzf@outlook.com >PostgreSQL version: 11.6 >Operating system: Centos 7.6 >Description: > >select stuck when use order by and limit 1 if order-by-field has one >index: >and possibility is high if result has no records, otherwise possibility is >low; >if no "limit 1" or no index on column pay_date, no problem; > >sql: >select * from >(select ( case when pre_pay is null then 0 else pre_pay end ) as "PRE_PAY" > >from inpatientprepay >where cancel='0' >and ehrid=4 >order by pay_date desc >) as t >limit 1 >; >other info: the inpatientprepay table has nine million records, I think >it's stuck because if no limit 1 ,speed is ok; > I think we need to see execution plans for both queries. Also, when you say "stuck" what does that mean? Does it mean it's waiting on a lock, or is it doing something but not producing results? Or what? regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services