Re: Query planner question

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: Soni M <diptatapa(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Query planner question
Date: 2014-08-25 16:09:07
Message-ID: CAMkU=1wAVW36Vwf=WsMEq5Bd=PN8=KqFApfQ7Kpxzps9by_SxQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Aug 20, 2014 at 6:16 PM, Soni M <diptatapa(at)gmail(dot)com> wrote:

> Hi Everyone,
>
> I have this query :
>
> select t.ticket_id ,
> tb.transmission_id
> from ticket t,
> transmission_base tb
> where t.latest_transmission_id = tb.transmission_id
> and t.ticket_number = tb.ticket_number
> and tb.parse_date > ('2014-07-31');
>
> Execution plan: http://explain.depesz.com/s/YAak
>
> Indexes on ticket :
> "ticket_pkey" PRIMARY KEY, btree (ticket_id) CLUSTER
> "ticket_by_latest_transmission" btree (latest_transmission_id)
> "ticket_by_ticket_number" btree (ticket_number)
>
> This query only returns some portions of rows from ticket table.
> The question is, Why does postgres need to get all the rows from ticket
> table in order to complete this query?
> Can't postgres use indexes to get only needed rows on ticket table?
>
> I try set seqscan to off, but still index scan try to get all rows on
> ticket table.
> Here's the execution plan : http://explain.depesz.com/s/abH2
>

If you want to force a nested loop, you probably need to disable the
mergejoin as well, and maybe the hashjoin. Forcing the planner to do
things the way you want can be difficult.

Cheers,

Jeff

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bill Moran 2014-08-25 16:43:31 Re: Query planner question
Previous Message Daniele Varrazzo 2014-08-25 15:36:00 Re: How to insert either a value or the column default?