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
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 |