Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMTnL-0003uy-NT for pgsql-performance@arkaria.postgresql.org; Wed, 06 Dec 2017 07:07:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMTnK-0003vq-S0 for pgsql-performance@arkaria.postgresql.org; Wed, 06 Dec 2017 07:07:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eMTnK-0003vS-G5 for pgsql-performance@lists.postgresql.org; Wed, 06 Dec 2017 07:07:02 +0000 Received: from mail-lf0-x241.google.com ([2a00:1450:4010:c07::241]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1eMTnF-0006rv-Gd for pgsql-performance@lists.postgresql.org; Wed, 06 Dec 2017 07:07:01 +0000 Received: by mail-lf0-x241.google.com with SMTP id j124so3099759lfg.2 for ; Tue, 05 Dec 2017 23:06:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=3Tg8Unk8+INwhqyIy6IXR3sWuCUmHQ6T0JIsppZtH68=; b=QGuN6Nv91w0imkokQKVyaX0wEN1TOItyPF/UCMr1pbWMZlQxQWpxwYZC33tyDZP+NJ tZtKBBCXdu7qCic0fUimziHyrUiEDb0DJneliQKX8zpcLxqqvCxLDEgPSSTaIi3CLx6S KwcpOFiAnUOWLdi6uAAGbSaBivaBGMa0tffHolOb/CLSgVoLbUdwK3/Iv838KcE0Ab2P 3E1KoXrkLTyepxg3Qy1qprkgibEFLnad4N82qpiS2UL0DvnIfZwyv9elc1+RXVoW0di9 VGcS/JthFBljKG/RdYEuq9UvHeeQKAm91KZBd6URCdd8rHcMW+rMpCM6B9Is3mXBNpA4 iCtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=3Tg8Unk8+INwhqyIy6IXR3sWuCUmHQ6T0JIsppZtH68=; b=J5lbEOydG6HVmRzb7aw+q60QTbPLG9Z4UfsLj9PabJ5fSYwlJ6cHE4RdYzZC9gZytD fZr7Iy+atVqxknYS1l12rUGSjYfalgyHoqrNBM/fpX787fUMF/q6eVFdG7JzfWTHOAyx j1xrWDlmhv4olZpq8ein9g418gmcvQpX09+WSgFAiVDvjoLT2DeqdIU05pknt7eM136j I+kjpHzIPO5GohkDered9KB80U5J4jIVsGjyrIPm33cR4BeoG9Nd8bWQrSLdhAENRkYf OjkjZaPs2NPSNZLJK1y2oDXn0nXO3HbcGBkw1PUrH5ghPel/EsL/A51/NA4MK6+JY2/g XNUw== X-Gm-Message-State: AJaThX6DM5lWMhD6hSDCxWIuIZYNsJCvP97Bdvby46yrUjr4XL2NYSBk 7QWleGpTq/FxI6e81SapLWpgQ67N X-Google-Smtp-Source: AGs4zMYH/pCGjIekPI2zT/gTOWuteW1079YzkKdcQ3tRr9qCkpRoNeavlwH7Voff1ptRiF/XwLR32A== X-Received: by 10.25.38.199 with SMTP id m190mr11385930lfm.95.1512544014980; Tue, 05 Dec 2017 23:06:54 -0800 (PST) Received: from [192.168.1.151] ([178.54.41.83]) by smtp.gmail.com with ESMTPSA id 62sm399119ljj.12.2017.12.05.23.06.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Dec 2017 23:06:53 -0800 (PST) Subject: Re: Bitmap scan is undercosted? From: Vitaliy Garnashevich To: Jeff Janes , Tom Lane Cc: Justin Pryzby , pgsql-performance@lists.postgresql.org References: <73a4936d-2814-dc08-ed0c-978f76f435b0@gmail.com> <20171201183427.GK18413@telsasoft.com> <20171201231104.GN18413@telsasoft.com> <18188.1512258290@sss.pgh.pa.us> <0a0bfd5f-06cc-918b-da75-4e45c4e8ea27@gmail.com> Message-ID: Date: Wed, 6 Dec 2017 09:06:52 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <0a0bfd5f-06cc-918b-da75-4e45c4e8ea27@gmail.com> Content-Type: multipart/mixed; boundary="------------04C78DCDD8E9430C702A50D3" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------04C78DCDD8E9430C702A50D3 Content-Type: multipart/alternative; boundary="------------F276ADDD48BB12F193E01359" --------------F276ADDD48BB12F193E01359 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 04/12/2017 00:11, Vitaliy Garnashevich wrote: > On 03/12/2017 03:27, Jeff Janes wrote: >> Due to that, when I disable bitmapscans and seqscans, I start getting >> slow index scans on the wrong index, i2 rather than i1.  I don't know >> why he doesn't see that in his example. > When I increase effective_cache_size to 1024MB, I start getting the > plan with the slower index i2, too. > > *Bitmap Heap Scan* on public.aaa  (cost=12600.90..*23688**.70* > rows=9488 width=5) (actual time=107.529..*115.902* rows=9976 loops=1) >   ->  BitmapAnd  (cost=12600.90..12600.90 rows=9488 width=0) (actual > time=105.133..105.133 rows=0 loops=1) >         ->  Bitmap Index Scan on i1  (cost=0.00..1116.43 rows=96000 > width=0) (actual time=16.313..16.313 rows=100508 loops=1) >         ->  Bitmap Index Scan on i2  (cost=0.00..11479.47 rows=988338 > width=0) (actual time=77.950..77.950 rows=1000200 loops=1) > > *Index Scan* using i2 on public.aaa  (cost=0.44..*48227.31* rows=9488 > width=5) (actual time=0.020..*285.695* rows=9976 loops=1) > > *Seq Scan* on public.aaa  (cost=0.00..*169248.54* rows=9488 width=5) > (actual time=0.024..*966.469* rows=9976 loops=1) > > This way the estimates and the actual time get more sense. But then > there's the question - maybe it's i1 runs too fast, and is estimated > incorrectly? Why that happens? I've tried to create a better test case: - Increase shared_buffers and effective_cache_size to fit whole database, including indexes. - Use random(), to avoid correlation between the filtered values. - Make both columns of integer type, to avoid special cases with boolean (like the one happened with CREATE STATISTICS). - Flush OS disk cache and then try running the query several times, to get both cold-cache results and all-in-ram results. - There are several tests, with different frequency of the selected values in the two columns: [1/10, 1/10], [1/50, 1/10], [1/100, 1/10]. - There is a split of cost by contribution of each of its components: seq_page_cost, random_page_cost, cpu_tuple_cost, cpu_index_tuple_cost, cpu_operator_cost. The EXPLAIN is run for each component, every time with only one of the components set to non-zero. - The test was run on a Digitalocean VM: Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-101-generic x86_64), 2 GB RAM,  2 core CPU, SSD; PostgreSQL 9.5.10. shared_buffers = 1024MB effective_cache_size = 1024MB work_mem = 100MB create table aaa as select floor(random()*10)::int num, (random()*10 < 1)::int flag from generate_series(1, 10000000) id; create table aaa as select floor(random()*50)::int num, (random()*10 < 1)::int flag from generate_series(1, 10000000) id; create table aaa as select floor(random()*100)::int num, (random()*10 < 1)::int flag from generate_series(1, 10000000) id; create index i1 on aaa  (num); create index i2 on aaa  (flag); set enable_bitmapscan = on; set enable_indexscan = off; set enable_seqscan = off; set enable_bitmapscan = off; set enable_indexscan = on; set enable_seqscan = off; set enable_bitmapscan = off; set enable_indexscan = off; set enable_seqscan = on; set seq_page_cost = 1.0; set random_page_cost = 1.0; set cpu_tuple_cost = 0.01; set cpu_index_tuple_cost = 0.005; set cpu_operator_cost = 0.0025; explain (analyze,verbose,costs,buffers) select * from aaa where num = 1 and flag = 1; Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=345.349..6061.834 rows=99600 loops=1)  read=45091 Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=593.915..991.403 rows=99600 loops=1)   hit=45091 Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=255.273..355.694 rows=99600 loops=1)   hit=45091 Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=284.768..385.505 rows=99600 loops=1)   hit=45091 ? +  ? +  1014.03 +  ? +  5595.52 = ? Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=238.566..3115.445 rows=20114 loops=1)   read=19425 Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=314.590..382.207 rows=20114 loops=1)    hit=19425 Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=265.899..311.064 rows=20114 loops=1)    hit=19425 Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=209.470..237.697 rows=20114 loops=1)    hit=19425 9689.92 +  ? +  196.44 +  ? +  ? = ? Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=284.381..2019.717 rows=10114 loops=1)   read=12059 Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=153.445..180.770 rows=10114 loops=1)    hit=12059 Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=146.275..159.446 rows=10114 loops=1)    hit=12059 Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=140.973..153.998 rows=10114 loops=1)    hit=12059 4098.28 +  ? +  100.90 +  ? +  ? = ? Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.126..2056.913 rows=99600 loops=1)               read=44248 Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.045..1595.377 rows=99600 loops=1)               hit=32 read=44216 Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.066..1392.700 rows=99600 loops=1)               hit=64 read=44184 Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.069..1378.574 rows=99600 loops=1)               hit=96 read=44152 44248.00 +  0.00 +  100000.33 +  0.00 +  50000.17 = 194248.5 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.646..1801.794 rows=20114 loops=1)                read=44248 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.385..1518.613 rows=20114 loops=1)                hit=32 read=44216 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.346..1369.021 rows=20114 loops=1)                hit=64 read=44184 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.597..1792.959 rows=20114 loops=1)                hit=96 read=44152 44248.00 +  0.00 +  99999.85 +  0.00 +  49999.93 = 194247.78 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.700..2194.195 rows=10114 loops=1)                read=44248 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.145..1401.274 rows=10114 loops=1)                hit=32 read=44216 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.185..1602.002 rows=10114 loops=1)                hit=64 read=44184 Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.184..1353.162 rows=10114 loops=1)                hit=96 read=44152 44248.00 +  0.00 +  99999.85 +  0.00 +  49999.93 = 194247.78 Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.400..1325.638 rows=99600 loops=1)     read=46983 Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.020..479.713 rows=99600 loops=1)      hit=46983 Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.024..642.947 rows=99600 loops=1)      hit=46983 Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.038..756.045 rows=99600 loops=1)      hit=46983 45.95 +  46638.42 +  10336.67 +  5168.34 +  5168.77 = 67358.15 Rows Removed by Filter: 900156 Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.600..1059.269 rows=20114 loops=1)      read=44373 Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.071..208.940 rows=20114 loops=1)       hit=44373 Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.044..124.437 rows=20114 loops=1)       hit=44373 Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.044..127.814 rows=20114 loops=1)       hit=44373 0.23 +  44788.68 +  2010.00 +  1005.00 +  1005.43 = 48809.34 Rows Removed by Filter: 179792 Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.647..1510.482 rows=10114 loops=1)      read=39928 Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.035..141.847 rows=10114 loops=1)       hit=39928 Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.032..86.716 rows=10114 loops=1)        hit=39928 Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.032..79.492 rows=10114 loops=1)        hit=39928 0.01 +  44524.36 +  1010.00 +  505.00 +  505.44 = 46544.81 Rows Removed by Filter: 89762 Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=1.337..1543.611 rows=99600 loops=1)     read=46985 Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=0.027..410.623 rows=99600 loops=1)      hit=46985 Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=0.025..377.529 rows=99600 loops=1)      hit=46985 Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=0.025..377.554 rows=99600 loops=1)      hit=46985 2979.08 +  16566.83 +  9810.00 +  4905.00 +  4905.44 = 39166.35 Rows Removed by Filter: 900835 Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.783..2236.765 rows=20114 loops=1)      read=46985 Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.198..777.279 rows=20114 loops=1)       hit=46985 Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.196..437.177 rows=20114 loops=1)       hit=46985 Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.075..346.481 rows=20114 loops=1)       hit=46985 2949.05 +  16751.68 +  9773.33 +  4886.66 +  4887.10 = 39247.82 Rows Removed by Filter: 980350 Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.619..1350.886 rows=10114 loops=1)      read=46987 Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.069..448.975 rows=10114 loops=1)       hit=46987 Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.048..383.066 rows=10114 loops=1)       hit=46987 Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.050..387.874 rows=10114 loops=1)       hit=46987 2974.39 +  17212.52 +  9990.00 +  4995.00 +  4995.44 = 40167.35 Rows Removed by Filter: 991389 What seems odd to me is that in different kinds of tests (with different frequency of column values): i1 Rows Removed by Filter = 900156, 179792, 89762 (decreased a lot) i1 buffers = 46983, 44373, 39928 (decreased, but not a lot) i1 best case time = 756.045, 127.814, 79.492 (decreased a lot, as well as probably average case too) i1 cost estimates = 67358.15, 48809.34, 46544.80 (did not decrease a lot) i2 Rows Removed by Filter = 900835, 980350, 991389 i2 buffers = 46985, 46985, 46987 i2 best case time = 377.554, 346.481, 387.874 i2 cost estimates = 39166.34, 39247.83, 40167.34 It's odd that increase in actual execution time for "i1" was not reflected enough in cost estimates. The cost even didn't go below "i2" costs. Details about the test are attached. Regards, Vitaliy --------------F276ADDD48BB12F193E01359 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit
On 04/12/2017 00:11, Vitaliy Garnashevich wrote:
On 03/12/2017 03:27, Jeff Janes wrote:
Due to that, when I disable bitmapscans and seqscans, I start getting slow index scans on the wrong index, i2 rather than i1.  I don't know why he doesn't see that in his example.
When I increase effective_cache_size to 1024MB, I start getting the plan with the slower index i2, too.

Bitmap Heap Scan on public.aaa  (cost=12600.90..23688.70 rows=9488 width=5) (actual time=107.529..115.902 rows=9976 loops=1)
  ->  BitmapAnd  (cost=12600.90..12600.90 rows=9488 width=0) (actual time=105.133..105.133 rows=0 loops=1)
        ->  Bitmap Index Scan on i1  (cost=0.00..1116.43 rows=96000 width=0) (actual time=16.313..16.313 rows=100508 loops=1)
        ->  Bitmap Index Scan on i2  (cost=0.00..11479.47 rows=988338 width=0) (actual time=77.950..77.950 rows=1000200 loops=1)

Index Scan using i2 on public.aaa  (cost=0.44..48227.31 rows=9488 width=5) (actual time=0.020..285.695 rows=9976 loops=1)

Seq Scan on public.aaa  (cost=0.00..169248.54 rows=9488 width=5) (actual time=0.024..966.469 rows=9976 loops=1)

This way the estimates and the actual time get more sense. But then there's the question - maybe it's i1 runs too fast, and is estimated incorrectly? Why that happens?

I've tried to create a better test case:
- Increase shared_buffers and effective_cache_size to fit whole database, including indexes.
- Use random(), to avoid correlation between the filtered values.
- Make both columns of integer type, to avoid special cases with boolean (like the one happened with CREATE STATISTICS).
- Flush OS disk cache and then try running the query several times, to get both cold-cache results and all-in-ram results.
- There are several tests, with different frequency of the selected values in the two columns: [1/10, 1/10], [1/50, 1/10], [1/100, 1/10].
- There is a split of cost by contribution of each of its components: seq_page_cost, random_page_cost, cpu_tuple_cost, cpu_index_tuple_cost, cpu_operator_cost. The EXPLAIN is run for each component, every time with only one of the components set to non-zero.
- The test was run on a Digitalocean VM: Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-101-generic x86_64), 2 GB RAM,  2 core CPU, SSD; PostgreSQL 9.5.10.


shared_buffers = 1024MB
effective_cache_size = 1024MB
work_mem = 100MB

create table aaa as select floor(random()*10)::int num, (random()*10 < 1)::int flag from generate_series(1, 10000000) id;
create table aaa as select floor(random()*50)::int num, (random()*10 < 1)::int flag from generate_series(1, 10000000) id;
create table aaa as select floor(random()*100)::int num, (random()*10 < 1)::int flag from generate_series(1, 10000000) id;

create index i1 on aaa  (num);
create index i2 on aaa  (flag);

set enable_bitmapscan = on; set enable_indexscan = off;  set enable_seqscan = off;
set enable_bitmapscan = off; set enable_indexscan = on;  set enable_seqscan = off;
set enable_bitmapscan = off; set enable_indexscan = off;  set enable_seqscan = on;

set seq_page_cost = 1.0; set random_page_cost = 1.0; set cpu_tuple_cost = 0.01; set cpu_index_tuple_cost = 0.005; set cpu_operator_cost = 0.0025;

explain (analyze,verbose,costs,buffers) select * from aaa where num = 1 and flag = 1;


Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=345.349..6061.834 rows=99600 loops=1)  read=45091
Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=593.915..991.403 rows=99600 loops=1)   hit=45091
Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=255.273..355.694 rows=99600 loops=1)   hit=45091
Bitmap Heap Scan on public.aaa  (cost=20687.87..66456.91 rows=101403 width=8) (actual time=284.768..385.505 rows=99600 loops=1)   hit=45091
? +  ? +  1014.03 +  ? +  5595.52 = ?

Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=238.566..3115.445 rows=20114 loops=1)   read=19425
Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=314.590..382.207 rows=20114 loops=1)    hit=19425
Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=265.899..311.064 rows=20114 loops=1)    hit=19425
Bitmap Heap Scan on public.aaa  (cost=12081.43..28452.09 rows=19644 width=8) (actual time=209.470..237.697 rows=20114 loops=1)    hit=19425
9689.92 +  ? +  196.44 +  ? +  ? = ?

Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=284.381..2019.717 rows=10114 loops=1)   read=12059
Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=153.445..180.770 rows=10114 loops=1)    hit=12059
Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=146.275..159.446 rows=10114 loops=1)    hit=12059
Bitmap Heap Scan on public.aaa  (cost=11273.15..20482.50 rows=10090 width=8) (actual time=140.973..153.998 rows=10114 loops=1)    hit=12059
4098.28 +  ? +  100.90 +  ? +  ? = ?


Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.126..2056.913 rows=99600 loops=1)               read=44248
Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.045..1595.377 rows=99600 loops=1)               hit=32 read=44216
Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.066..1392.700 rows=99600 loops=1)               hit=64 read=44184
Seq Scan on public.aaa  (cost=0.00..194248.49 rows=101403 width=8) (actual time=0.069..1378.574 rows=99600 loops=1)               hit=96 read=44152
44248.00 +  0.00 +  100000.33 +  0.00 +  50000.17 = 194248.5

Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.646..1801.794 rows=20114 loops=1)                read=44248
Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.385..1518.613 rows=20114 loops=1)                hit=32 read=44216
Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.346..1369.021 rows=20114 loops=1)                hit=64 read=44184
Seq Scan on public.aaa  (cost=0.00..194247.77 rows=19644 width=8) (actual time=0.597..1792.959 rows=20114 loops=1)                hit=96 read=44152
44248.00 +  0.00 +  99999.85 +  0.00 +  49999.93 = 194247.78

Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.700..2194.195 rows=10114 loops=1)                read=44248
Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.145..1401.274 rows=10114 loops=1)                hit=32 read=44216
Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.185..1602.002 rows=10114 loops=1)                hit=64 read=44184
Seq Scan on public.aaa  (cost=0.00..194247.77 rows=10090 width=8) (actual time=0.184..1353.162 rows=10114 loops=1)                hit=96 read=44152
44248.00 +  0.00 +  99999.85 +  0.00 +  49999.93 = 194247.78


Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.400..1325.638 rows=99600 loops=1)     read=46983
Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.020..479.713 rows=99600 loops=1)      hit=46983
Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.024..642.947 rows=99600 loops=1)      hit=46983
Index Scan using i1 on public.aaa  (cost=0.43..67358.15 rows=101403 width=8) (actual time=0.038..756.045 rows=99600 loops=1)      hit=46983
45.95 +  46638.42 +  10336.67 +  5168.34 +  5168.77 = 67358.15
Rows Removed by Filter: 900156

Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.600..1059.269 rows=20114 loops=1)      read=44373
Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.071..208.940 rows=20114 loops=1)       hit=44373
Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.044..124.437 rows=20114 loops=1)       hit=44373
Index Scan using i1 on public.aaa  (cost=0.43..48809.34 rows=19644 width=8) (actual time=0.044..127.814 rows=20114 loops=1)       hit=44373
0.23 +  44788.68 +  2010.00 +  1005.00 +  1005.43 = 48809.34
Rows Removed by Filter: 179792

Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.647..1510.482 rows=10114 loops=1)      read=39928
Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.035..141.847 rows=10114 loops=1)       hit=39928
Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.032..86.716 rows=10114 loops=1)        hit=39928
Index Scan using i1 on public.aaa  (cost=0.43..46544.80 rows=10090 width=8) (actual time=0.032..79.492 rows=10114 loops=1)        hit=39928
0.01 +  44524.36 +  1010.00 +  505.00 +  505.44 = 46544.81
Rows Removed by Filter: 89762


Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=1.337..1543.611 rows=99600 loops=1)     read=46985
Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=0.027..410.623 rows=99600 loops=1)      hit=46985
Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=0.025..377.529 rows=99600 loops=1)      hit=46985
Index Scan using i2 on public.aaa  (cost=0.43..39166.34 rows=101403 width=8) (actual time=0.025..377.554 rows=99600 loops=1)      hit=46985
2979.08 +  16566.83 +  9810.00 +  4905.00 +  4905.44 = 39166.35
Rows Removed by Filter: 900835

Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.783..2236.765 rows=20114 loops=1)      read=46985
Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.198..777.279 rows=20114 loops=1)       hit=46985
Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.196..437.177 rows=20114 loops=1)       hit=46985
Index Scan using i2 on public.aaa  (cost=0.43..39247.83 rows=19644 width=8) (actual time=0.075..346.481 rows=20114 loops=1)       hit=46985
2949.05 +  16751.68 +  9773.33 +  4886.66 +  4887.10 = 39247.82
Rows Removed by Filter: 980350

Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.619..1350.886 rows=10114 loops=1)      read=46987
Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.069..448.975 rows=10114 loops=1)       hit=46987
Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.048..383.066 rows=10114 loops=1)       hit=46987
Index Scan using i2 on public.aaa  (cost=0.43..40167.34 rows=10090 width=8) (actual time=0.050..387.874 rows=10114 loops=1)       hit=46987
2974.39 +  17212.52 +  9990.00 +  4995.00 +  4995.44 = 40167.35
Rows Removed by Filter: 991389


What seems odd to me is that in different kinds of tests (with different frequency of column values):

i1 Rows Removed by Filter = 900156, 179792, 89762 (decreased a lot)
i1 buffers = 46983, 44373, 39928 (decreased, but not a lot)
i1 best case time = 756.045, 127.814, 79.492 (decreased a lot, as well as probably average case too)
i1 cost estimates = 67358.15, 48809.34, 46544.80 (did not decrease a lot)

i2 Rows Removed by Filter = 900835, 980350, 991389
i2 buffers = 46985, 46985, 46987
i2 best case time = 377.554, 346.481, 387.874
i2 cost estimates = 39166.34, 39247.83, 40167.34

It's odd that increase in actual execution time for "i1" was not reflected enough in cost estimates. The cost even didn't go below "i2" costs.

Details about the test are attached.

Regards,
Vitaliy

--------------F276ADDD48BB12F193E01359-- --------------04C78DCDD8E9430C702A50D3 Content-Type: application/octet-stream; name="test.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test.zip" 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 ABM1AAAAAA== --------------04C78DCDD8E9430C702A50D3--