Unix Technical Forum

problem with wrong query planning and ineffective statistics

This is a discussion on problem with wrong query planning and ineffective statistics within the Pgsql Performance forums, part of the PostgreSQL category; --> I think I have an issue with the planning of this query that sometimes runs really slow. this is ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql Performance

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-19-2008, 10:21 AM
Paolo Negri
 
Posts: n/a
Default problem with wrong query planning and ineffective statistics

I think I have an issue with the planning of this query that sometimes
runs really slow.

this is the output of the EXPLAIN ANALYZE in the SLOW case

Sort (cost=4105.54..4105.54 rows=2 width=28) (actual
time=11404.225..11404.401 rows=265 loops=1)
Sort Key: table1.fdeventfromdate, table2.fdsurname, table2.fdtitle
-> Nested Loop Left Join (cost=192.34..4105.53 rows=2 width=28)
(actual time=0.770..11402.185 rows=265 loops=1)
Join Filter: ("inner".table2_id = "outer".id)
-> Nested Loop Left Join (cost=192.34..878.40 rows=1
width=28) (actual time=0.750..6.878 rows=96 loops=1)
Join Filter: ("inner".id = "outer".table1_id)
-> Nested Loop Left Join (cost=192.34..872.82 rows=1
width=24) (actual time=0.551..5.453 rows=96 loops=1)
-> Nested Loop Left Join (cost=192.34..866.86
rows=1 width=28) (actual time=0.534..4.370 rows=96 loops=1)
-> Nested Loop (cost=192.34..862.46
rows=1 width=28) (actual time=0.515..3.100 rows=96 loops=1)
-> Bitmap Heap Scan on table2
(cost=192.34..509.00 rows=96 width=24) (actual time=0.488..1.140
rows=96 loops=1)
Recheck Cond: ((id = ...
[CUT]

this query takes 11000 milliseconds

this is the output of the EXPLAIN ANALYZE in the FAST case

Sort (cost=8946.80..8946.82 rows=10 width=28) (actual
time=286.969..287.208 rows=363 loops=1)
Sort Key: table1.fdeventfromdate, table2.fdsurname, table2.fdtitle
-> Merge Left Join (cost=8617.46..8946.63 rows=10 width=28)
(actual time=232.330..284.750 rows=363 loops=1)
Merge Cond: ("outer".id = "inner".table2_id)
-> Sort (cost=946.68..946.69 rows=4 width=28) (actual
time=4.505..4.568 rows=101 loops=1)
Sort Key: table2.id
-> Hash Left Join (cost=208.33..946.64 rows=4
width=28) (actual time=0.786..4.279 rows=101 loops=1)
Hash Cond: ("outer".table1_id = "inner".id)
-> Nested Loop Left Join (cost=202.35..940.64
rows=4 width=24) (actual time=0.719..4.011 rows=101 loops=1)
-> Nested Loop Left Join
(cost=202.35..916.76 rows=4 width=28) (actual time=0.701..3.165
rows=101 loops=1)
-> Nested Loop (cost=202.35..899.50
rows=4 width=28) (actual time=0.676..2.284 rows=101 loops=1)
-> Bitmap Heap Scan on table2
(cost=202.35..534.18 rows=101 width=24) (actual time=0.644..1.028
rows=101 loops=1)
Recheck Cond: ((id = ...
[CUT]

this time the query takes 290 milliseconds

As you can see the forecast about the returned rows are completely off
in both case but the forecast of 10 rows in the second case is enough
to plan the query in a more clever way.
I tried to increase the default_statistics_target from 10 to 100 and
after I relaunched analyze on the DB on the test machine but this
hasn't improved in any way the situation.
The problem is, the distribution of the data across the tables joined
in this query is quite uneven and I can see the avg_width of the
relations keys is really not a good representative value.
Is there something I can do to improve this situation?

Thanks

Paolo

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

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 05:17 AM.


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