Unix Technical Forum

select slows from 3 seconds to 30 seconds

This is a discussion on select slows from 3 seconds to 30 seconds within the pgsql Sql forums, part of the PostgreSQL category; --> Hi folks. I have the query below which when run takes approx 3 seconds. However when I add the ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Sql

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-19-2008, 03:23 PM
Gary Stainburn
 
Posts: n/a
Default select slows from 3 seconds to 30 seconds

Hi folks.

I have the query below which when run takes approx 3 seconds. However when I
add the condition 'and w_ws_id = 10' onto the end changes to 30+ seconds.

Can anyone see why? I've included the explain for the long select.

select w_vin as key, w_vin, v_o_number as vista, v_status,
s_stock_no, s_customer_order,
coalesce(d.r_registration, p.r_registration, w_reg_no) as
reg_no,w_arrival,
w_updated::date,CURRENT_DATE-w_created::date as age, w_model,
w_radio_code, w_key_no, w_inspected, w_damage,
w_walon_repair,w_collect_date, w_despatch_date, w_sheet,
w_plates, w_accessories,
coalesce(p.d_des, d.d_des) as d_des,
coalesce(p.de_des, d.de_des) as de_des,
p.r_id as pdi,
d.r_id as delivery,
o.o_id, o.state
from walon
left outer join request_details p on p.t_id = 'P' and
substring(p.r_chassis from '(.{11}$)') = w_vin
left outer join request_details d on d.t_id = 'D' and
substring(d.r_chassis from '(.{11}$)') = w_vin
left outer join order_details o on
substring(o.o_vin from '(.{11}$)') = w_vin
left outer join stock s on substring(s.s_vin from '(.{11}$)') = w_vin
left outer join vista v on v.v_vin = w_vin
where w_hide = 0.


--
Gary Stainburn

This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-19-2008, 03:23 PM
Tom Lane
 
Posts: n/a
Default Re: select slows from 3 seconds to 30 seconds

Gary Stainburn <gary.stainburn@ringways.co.uk> writes:
> I have the query below which when run takes approx 3 seconds. However when I
> add the condition 'and w_ws_id = 10' onto the end changes to 30+ seconds.
> Can anyone see why? I've included the explain for the long select.


You really ought to provide EXPLAIN ANALYZE output for both versions if
you want intelligent commentary --- otherwise we're just guessing.

But I would guess the problem is that the planner is way off about the
number of rows satisfying the joint condition --- it thinks two:

> -> Index Scan using walon_hide_index on walon (cost=0.00..85.04 rows=2 width=140)
> Index Cond: (w_hide = 0)
> Filter: (w_ws_id = 10)


This plan is good if there really are only a couple rows, but degrades
quickly if there are many...

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-19-2008, 03:23 PM
Gary Stainburn
 
Posts: n/a
Default Re: select slows from 3 seconds to 30 seconds

On Saturday 05 May 2007 01:57, Tom Lane wrote:
> Gary Stainburn <gary.stainburn@ringways.co.uk> writes:
> > I have the query below which when run takes approx 3 seconds. However
> > when I add the condition 'and w_ws_id = 10' onto the end changes to 30+
> > seconds. Can anyone see why? I've included the explain for the long
> > select.

>
> You really ought to provide EXPLAIN ANALYZE output for both versions if
> you want intelligent commentary --- otherwise we're just guessing.
>
> But I would guess the problem is that the planner is way off about the
>
> number of rows satisfying the joint condition --- it thinks two:
> > -> Index Scan using walon_hide_index on walon
> > (cost=0.00..85.04 rows=2 width=140) Index Cond: (w_hide = 0)
> > Filter: (w_ws_id = 10)

>
> This plan is good if there really are only a couple rows, but degrades
> quickly if there are many...
>
> regards, tom lane


Thanks Tom

I'll bear that in mind in future.

The problem was fixed by running a 'vacuum analyse' so it looks like the
planner was getting confused.

Gary


--
Gary Stainburn

This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 10:14 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com