Re: Two queries are better than one?

From: Gnanavel S <s(dot)gnanavel(at)gmail(dot)com>
To: karim(dot)nassar(at)acm(dot)org
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Two queries are better than one?
Date: 2005-07-29 04:11:31
Message-ID: eec3b03c050728211116bafdab@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On 7/29/05, Karim Nassar <karim(dot)nassar(at)acm(dot)org> wrote:
>
> I ran into a situation today maintaining someone else's code where the
> sum time running 2 queries seems to be faster than 1. The original code
> was split into two queries. I thought about joining them, but
> considering the intelligence of my predecessor, I wanted to test it.
>
> The question is, which technique is really faster? Is there some hidden
> setup cost I don't see with explain analyze?
>
> Postgres 7.4.7, Redhat AES 3
>
> Each query individually:
>
> test=> explain analyze
> test-> select * from order WHERE ord_batch='343B' AND ord_id='12-645';
> QUERY PLAN
>
> ----------------------------------------------------------------------------------------------------------------------------
> Index Scan using order_pkey on order (cost=0.00..6.02 rows=1 width=486)
> (actual time=0.063..0.066 rows=1 loops=1)
> Index Cond: ((ord_batch = '343B'::bpchar) AND (ord_id = '12-645'::bpchar))
> Total runtime: 0.172 ms
> (3 rows)
>
>
> test=> explain analyze
> test-> select cli_name from client where cli_code='1837';
> QUERY PLAN
>
> ---------------------------------------------------------------------------------------------------------------------
> Index Scan using client_pkey on client (cost=0.00..5.98 rows=2 width=39)
> (actual time=0.043..0.047 rows=1 loops=1)
> Index Cond: (cli_code = '1837'::bpchar)
> Total runtime: 0.112 ms
> (3 rows)
>
> Joined:
>
> test=> explain analyze
> test-> SELECT cli_name,order.*
> test-> FROM order
> test-> JOIN client ON (ord_client = cli_code)
> test-> WHERE ord_batch='343B' AND ord_id='12-645';

where is the cli_code condition in the above query?

QUERY PLAN
>
> ----------------------------------------------------------------------------------------------------------------------------------
> Nested Loop (cost=0.00..12.00 rows=2 width=525) (actual time=0.120..0.128rows=1 loops=1)
> -> Index Scan using order_pkey on order (cost=0.00..6.02 rows=1 width=486)
> (actual time=0.064..0.066 rows=1 loops=1)
> Index Cond: ((ord_batch = '343B'::bpchar) AND (ord_id = '12-645'::bpchar))
> -> Index Scan using client_pkey on client (cost=0.00..5.98 rows=1
> width=51) (actual time=0.023..0.026 rows=1 loops=1)
> Index Cond: ("outer".ord_client = client.cli_code)
> Total runtime: 0.328 ms
> (6 rows)
>
>
> --
> Karim Nassar <karim(dot)nassar(at)acm(dot)org>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
>

--
with regards,
S.Gnanavel
Satyam Computer Services Ltd.

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Karim Nassar 2005-07-29 04:21:38 Re: Two queries are better than one?
Previous Message Luke Lonergan 2005-07-29 04:07:12 Re: [PATCHES] COPY FROM performance improvements