Dealing with complex queries - Mailing list pgsql-general
From | Francisco Reyes |
---|---|
Subject | Dealing with complex queries |
Date | |
Msg-id | 20030203162150.E55262-100000@zoraida.natserv.net Whole thread Raw |
Responses |
Re: Dealing with complex queries
Re: Dealing with complex queries |
List | pgsql-general |
Any hints suggestions on dealing with complex queries. Most of the queries I have done with pgsql up to this point have been fairly straight forward compared to a current project I have. Also I find the 7.3 explain harder to read. Never quite fully underestand the 7.2 explain output, but 7.3 is even more informational/chatty. Is there an "explain tutorial" somewhere? Specially covering the 7.3 details. As an example of the query and explain output: select jc.type, jc.id, jc.last, jc.first, jc.track, jc.date, jc.race, jc.day, ppl.carried_as, pe.jt_id from jc_people jc, hraces hr, rkeys rk, pplkeys ppl, people pe where jc.type = 'j' and jc.track = rk.track and jc.date = rk.date and jc.race = rk.race and hr.race_key = rk.race_key and ppl.ppl_key = hr.jockey_key and substring(ppl.carried_as from 1 for 3) = substring(jc.last from 1 for 3) and pe.type = 'j' and ppl.type= 'j' and pe.jt_id = 0 and pe.ppl_key = ppl.ppl_key limit 10; Limit (cost=0.00..34349.28 rows=1 width=141) -> Merge Join (cost=0.00..34349.28 rows=1 width=141) Merge Cond: ("outer".ppl_key = "inner".jockey_key) Join Filter: ("inner".race_key = "outer".race_key) -> Nested Loop (cost=0.00..62872423.96 rows=5149 width=133) Join Filter: ("outer".race = "inner".race) -> Nested Loop (cost=0.00..62540586.27 rows=42980 width=116) Join Filter: ("substring"(("outer".carried_as)::text, 1, 3) = "substring"(("inner".last)::text, 1, 3)) -> Nested Loop (cost=0.00..61156275.74 rows=1280 width=51) Join Filter: ("outer".ppl_key = "inner".ppl_key) -> Index Scan using people_pplkey on people pe (cost=0.00..2904.19 rows=6275 width=8) Filter: ("type" = 'j'::bpchar) -> Seq Scan on pplkeys ppl (cost=0.00..8929.70 rows=65324 width=43) Filter: ("type" = 'j'::bpchar) -> Seq Scan on jc_people jc (cost=0.00..963.96 rows=6716 width=65) Filter: ("type" = 'j'::bpchar) -> Index Scan using rk_track_date_eve_race on rkeys rk (cost=0.00..7.70 rows=1 width=17) Index Cond: (("outer".track = rk.track) AND ("outer".date = rk.date)) -> Index Scan using hr_jockey_key on hraces hr (cost=0.00..26712.29 rows=492390 width=8)
pgsql-general by date: