Re: Re: understanding why two nearly identical queries take two different planner routes, one 5s and one 2hr

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: David G Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Re: understanding why two nearly identical queries take two different planner routes, one 5s and one 2hr
Date: 2014-08-06 17:08:35
Message-ID: CAMkU=1zmbs9YV+8fn0Jag4hgrJGmGpyPGnkeSTspa4j-mEYwXQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, Aug 5, 2014 at 4:30 PM, David G Johnston <david(dot)g(dot)johnston(at)gmail(dot)com
> wrote:

>
> NOTE: I am confused by this line:
> -> BitmapAnd (cost=291564.31..291564.31 rows=28273 width=0) (actual
> time=23843.870..23843.870 rows=0 loops=1)
>
> How did actual match zero rows? It should be something like 2.2M
>

The accounting for bitmap operations seems to be a bit of a mess. In some
cases, it reports the number of rows represented in the bitmap. Sometimes
it counts a bitmap itself as a row, and so there is just one of them no
matter how many rows it represents. In this case, it seems to consider a
bitmap not to be a row at all. The problem with counting the number of
rows represented by the bitmap is that that value is unknown if either if
the input bitmaps has gone lossy.

> Anyway, you should probably experiment with creating a multi-column index
> instead of allowing PostgreSQL to BitmapAnd them together. Likely the
> timestamp will have higher cardinality and so should be listed first in the
> index.

No, the timestamp should almost certainly come second because it is used
with inequality operators.

Cheers,

Jeff

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ray Stell 2014-08-06 17:29:59 Re: Questions on dynamic execution and sqlca
Previous Message Jeff Janes 2014-08-06 16:59:38 Re: understanding why two nearly identical queries take two different planner routes, one 5s and one 2hr