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-23 06:04:33
Message-ID: CAMkU=1xsFm4p_0K-R+i_WuGL4whAB2fwbDE7xwg3fXZMR1j8Dg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wednesday, August 20, 2014, 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?
>

It can, but having separate indexes on latest_transmission_id and
ticket_number is not going to work.

You need a joint index on both columns.

Cheers,

Jeff

>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Alban Hertroys 2014-08-23 09:33:10 Re: Query planner question
Previous Message David G Johnston 2014-08-23 03:57:57 Re: Query planner question