

======================================================================
 QUERY FILE: 16 (16.sql)
 TIMESTAMP:  Mon Dec 15 19:01:18 CST 2025
======================================================================

--- [ CONFIG: dp ] ----------------------------------------
Limit  (cost=44760.39..44760.39 rows=1 width=44) (actual time=299.692..299.694 rows=1.00 loops=1)
  Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
  Buffers: shared hit=21848
  ->  Sort  (cost=44760.39..44799.71 rows=15727 width=44) (actual time=299.691..299.693 rows=1.00 loops=1)
        Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
        Sort Key: (count(DISTINCT partsupp.ps_suppkey)) DESC, part.p_brand, part.p_type, part.p_size
        Sort Method: top-N heapsort  Memory: 25kB
        Buffers: shared hit=21848
        ->  GroupAggregate  (cost=43821.10..44681.76 rows=15727 width=44) (actual time=284.195..298.268 rows=18164.00 loops=1)
              Output: part.p_brand, part.p_type, part.p_size, count(DISTINCT partsupp.ps_suppkey)
              Group Key: part.p_brand, part.p_type, part.p_size
              Buffers: shared hit=21836
              ->  Sort  (cost=43821.10..43961.78 rows=56271 width=40) (actual time=284.185..287.193 rows=118387.00 loops=1)
                    Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Method: quicksort  Memory: 10046kB
                    Buffers: shared hit=21836
                    ->  Hash Join  (cost=9802.58..39381.29 rows=56271 width=40) (actual time=29.576..169.552 rows=118387.00 loops=1)
                          Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                          Hash Cond: (partsupp.ps_partkey = part.p_partkey)
                          Buffers: shared hit=21836
                          ->  Seq Scan on public.partsupp  (cost=348.00..27864.00 rows=400000 width=8) (actual time=1.662..87.919 rows=799680.00 loops=1)
                                Output: partsupp.ps_partkey, partsupp.ps_suppkey, partsupp.ps_availqty, partsupp.ps_supplycost, partsupp.ps_comment
                                Filter: (NOT (ANY (partsupp.ps_suppkey = (hashed SubPlan any_1).col1)))
                                Rows Removed by Filter: 320
                                Buffers: shared hit=17739
                                SubPlan any_1
                                  ->  Seq Scan on public.supplier  (cost=0.00..348.00 rows=1 width=4) (actual time=0.091..1.643 rows=4.00 loops=1)
                                        Output: supplier.s_suppkey
                                        Filter: ((supplier.s_comment)::text ~~ '%Customer%Complaints%'::text)
                                        Rows Removed by Filter: 9996
                                        Buffers: shared hit=223
                          ->  Hash  (cost=9097.00..9097.00 rows=28606 width=40) (actual time=27.857..27.857 rows=29610.00 loops=1)
                                Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                Buckets: 32768  Batches: 1  Memory Usage: 2400kB
                                Buffers: shared hit=4097
                                ->  Seq Scan on public.part  (cost=0.00..9097.00 rows=28606 width=40) (actual time=0.019..24.639 rows=29610.00 loops=1)
                                      Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                      Filter: ((part.p_brand <> 'Brand#34'::bpchar) AND ((part.p_type)::text !~~ 'MEDIUM BRUSHED%'::text) AND (part.p_size = ANY ('{31,27,23,22,39,11,14,6}'::integer[])))
                                      Rows Removed by Filter: 170390
                                      Buffers: shared hit=4097
Planning:
  Buffers: shared hit=161
Planning Time: 0.368 ms
Execution Time: 299.894 ms

--- [ CONFIG: goo_rows ] ----------------------------------------
Limit  (cost=44760.39..44760.39 rows=1 width=44) (actual time=290.998..291.000 rows=1.00 loops=1)
  Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
  Buffers: shared hit=21848
  ->  Sort  (cost=44760.39..44799.71 rows=15727 width=44) (actual time=290.995..290.997 rows=1.00 loops=1)
        Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
        Sort Key: (count(DISTINCT partsupp.ps_suppkey)) DESC, part.p_brand, part.p_type, part.p_size
        Sort Method: top-N heapsort  Memory: 25kB
        Buffers: shared hit=21848
        ->  GroupAggregate  (cost=43821.10..44681.76 rows=15727 width=44) (actual time=275.903..289.602 rows=18164.00 loops=1)
              Output: part.p_brand, part.p_type, part.p_size, count(DISTINCT partsupp.ps_suppkey)
              Group Key: part.p_brand, part.p_type, part.p_size
              Buffers: shared hit=21836
              ->  Sort  (cost=43821.10..43961.78 rows=56271 width=40) (actual time=275.894..278.735 rows=118387.00 loops=1)
                    Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Method: quicksort  Memory: 10046kB
                    Buffers: shared hit=21836
                    ->  Hash Join  (cost=9802.58..39381.29 rows=56271 width=40) (actual time=29.955..159.866 rows=118387.00 loops=1)
                          Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                          Hash Cond: (partsupp.ps_partkey = part.p_partkey)
                          Buffers: shared hit=21836
                          ->  Seq Scan on public.partsupp  (cost=348.00..27864.00 rows=400000 width=8) (actual time=1.602..84.695 rows=799680.00 loops=1)
                                Output: partsupp.ps_partkey, partsupp.ps_suppkey, partsupp.ps_availqty, partsupp.ps_supplycost, partsupp.ps_comment
                                Filter: (NOT (ANY (partsupp.ps_suppkey = (hashed SubPlan any_1).col1)))
                                Rows Removed by Filter: 320
                                Buffers: shared hit=17739
                                SubPlan any_1
                                  ->  Seq Scan on public.supplier  (cost=0.00..348.00 rows=1 width=4) (actual time=0.072..1.585 rows=4.00 loops=1)
                                        Output: supplier.s_suppkey
                                        Filter: ((supplier.s_comment)::text ~~ '%Customer%Complaints%'::text)
                                        Rows Removed by Filter: 9996
                                        Buffers: shared hit=223
                          ->  Hash  (cost=9097.00..9097.00 rows=28606 width=40) (actual time=28.308..28.308 rows=29610.00 loops=1)
                                Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                Buckets: 32768  Batches: 1  Memory Usage: 2400kB
                                Buffers: shared hit=4097
                                ->  Seq Scan on public.part  (cost=0.00..9097.00 rows=28606 width=40) (actual time=0.013..24.670 rows=29610.00 loops=1)
                                      Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                      Filter: ((part.p_brand <> 'Brand#34'::bpchar) AND ((part.p_type)::text !~~ 'MEDIUM BRUSHED%'::text) AND (part.p_size = ANY ('{31,27,23,22,39,11,14,6}'::integer[])))
                                      Rows Removed by Filter: 170390
                                      Buffers: shared hit=4097
Planning:
  Buffers: shared hit=161
Planning Time: 0.360 ms
Execution Time: 291.343 ms

--- [ CONFIG: goo_selectivity ] ----------------------------------------
Limit  (cost=44760.39..44760.39 rows=1 width=44) (actual time=304.006..304.010 rows=1.00 loops=1)
  Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
  Buffers: shared hit=21848
  ->  Sort  (cost=44760.39..44799.71 rows=15727 width=44) (actual time=304.005..304.009 rows=1.00 loops=1)
        Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
        Sort Key: (count(DISTINCT partsupp.ps_suppkey)) DESC, part.p_brand, part.p_type, part.p_size
        Sort Method: top-N heapsort  Memory: 25kB
        Buffers: shared hit=21848
        ->  GroupAggregate  (cost=43821.10..44681.76 rows=15727 width=44) (actual time=289.158..302.605 rows=18164.00 loops=1)
              Output: part.p_brand, part.p_type, part.p_size, count(DISTINCT partsupp.ps_suppkey)
              Group Key: part.p_brand, part.p_type, part.p_size
              Buffers: shared hit=21836
              ->  Sort  (cost=43821.10..43961.78 rows=56271 width=40) (actual time=289.144..291.848 rows=118387.00 loops=1)
                    Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Method: quicksort  Memory: 10046kB
                    Buffers: shared hit=21836
                    ->  Hash Join  (cost=9802.58..39381.29 rows=56271 width=40) (actual time=29.511..170.240 rows=118387.00 loops=1)
                          Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                          Hash Cond: (partsupp.ps_partkey = part.p_partkey)
                          Buffers: shared hit=21836
                          ->  Seq Scan on public.partsupp  (cost=348.00..27864.00 rows=400000 width=8) (actual time=1.572..88.249 rows=799680.00 loops=1)
                                Output: partsupp.ps_partkey, partsupp.ps_suppkey, partsupp.ps_availqty, partsupp.ps_supplycost, partsupp.ps_comment
                                Filter: (NOT (ANY (partsupp.ps_suppkey = (hashed SubPlan any_1).col1)))
                                Rows Removed by Filter: 320
                                Buffers: shared hit=17739
                                SubPlan any_1
                                  ->  Seq Scan on public.supplier  (cost=0.00..348.00 rows=1 width=4) (actual time=0.067..1.559 rows=4.00 loops=1)
                                        Output: supplier.s_suppkey
                                        Filter: ((supplier.s_comment)::text ~~ '%Customer%Complaints%'::text)
                                        Rows Removed by Filter: 9996
                                        Buffers: shared hit=223
                          ->  Hash  (cost=9097.00..9097.00 rows=28606 width=40) (actual time=27.890..27.891 rows=29610.00 loops=1)
                                Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                Buckets: 32768  Batches: 1  Memory Usage: 2400kB
                                Buffers: shared hit=4097
                                ->  Seq Scan on public.part  (cost=0.00..9097.00 rows=28606 width=40) (actual time=0.010..24.486 rows=29610.00 loops=1)
                                      Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                      Filter: ((part.p_brand <> 'Brand#34'::bpchar) AND ((part.p_type)::text !~~ 'MEDIUM BRUSHED%'::text) AND (part.p_size = ANY ('{31,27,23,22,39,11,14,6}'::integer[])))
                                      Rows Removed by Filter: 170390
                                      Buffers: shared hit=4097
Planning:
  Buffers: shared hit=161
Planning Time: 0.353 ms
Execution Time: 304.326 ms

--- [ CONFIG: goo_result_size ] ----------------------------------------
Limit  (cost=44760.39..44760.39 rows=1 width=44) (actual time=290.087..290.089 rows=1.00 loops=1)
  Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
  Buffers: shared hit=21848
  ->  Sort  (cost=44760.39..44799.71 rows=15727 width=44) (actual time=290.087..290.088 rows=1.00 loops=1)
        Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
        Sort Key: (count(DISTINCT partsupp.ps_suppkey)) DESC, part.p_brand, part.p_type, part.p_size
        Sort Method: top-N heapsort  Memory: 25kB
        Buffers: shared hit=21848
        ->  GroupAggregate  (cost=43821.10..44681.76 rows=15727 width=44) (actual time=275.239..288.692 rows=18164.00 loops=1)
              Output: part.p_brand, part.p_type, part.p_size, count(DISTINCT partsupp.ps_suppkey)
              Group Key: part.p_brand, part.p_type, part.p_size
              Buffers: shared hit=21836
              ->  Sort  (cost=43821.10..43961.78 rows=56271 width=40) (actual time=275.229..277.938 rows=118387.00 loops=1)
                    Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Method: quicksort  Memory: 10046kB
                    Buffers: shared hit=21836
                    ->  Hash Join  (cost=9802.58..39381.29 rows=56271 width=40) (actual time=28.067..160.598 rows=118387.00 loops=1)
                          Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                          Hash Cond: (partsupp.ps_partkey = part.p_partkey)
                          Buffers: shared hit=21836
                          ->  Seq Scan on public.partsupp  (cost=348.00..27864.00 rows=400000 width=8) (actual time=1.572..85.391 rows=799680.00 loops=1)
                                Output: partsupp.ps_partkey, partsupp.ps_suppkey, partsupp.ps_availqty, partsupp.ps_supplycost, partsupp.ps_comment
                                Filter: (NOT (ANY (partsupp.ps_suppkey = (hashed SubPlan any_1).col1)))
                                Rows Removed by Filter: 320
                                Buffers: shared hit=17739
                                SubPlan any_1
                                  ->  Seq Scan on public.supplier  (cost=0.00..348.00 rows=1 width=4) (actual time=0.070..1.558 rows=4.00 loops=1)
                                        Output: supplier.s_suppkey
                                        Filter: ((supplier.s_comment)::text ~~ '%Customer%Complaints%'::text)
                                        Rows Removed by Filter: 9996
                                        Buffers: shared hit=223
                          ->  Hash  (cost=9097.00..9097.00 rows=28606 width=40) (actual time=26.454..26.454 rows=29610.00 loops=1)
                                Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                Buckets: 32768  Batches: 1  Memory Usage: 2400kB
                                Buffers: shared hit=4097
                                ->  Seq Scan on public.part  (cost=0.00..9097.00 rows=28606 width=40) (actual time=0.009..23.688 rows=29610.00 loops=1)
                                      Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                      Filter: ((part.p_brand <> 'Brand#34'::bpchar) AND ((part.p_type)::text !~~ 'MEDIUM BRUSHED%'::text) AND (part.p_size = ANY ('{31,27,23,22,39,11,14,6}'::integer[])))
                                      Rows Removed by Filter: 170390
                                      Buffers: shared hit=4097
Planning:
  Buffers: shared hit=161
Planning Time: 0.347 ms
Execution Time: 290.298 ms

--- [ CONFIG: goo_cost ] ----------------------------------------
Limit  (cost=44760.39..44760.39 rows=1 width=44) (actual time=302.864..302.868 rows=1.00 loops=1)
  Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
  Buffers: shared hit=21848
  ->  Sort  (cost=44760.39..44799.71 rows=15727 width=44) (actual time=302.863..302.866 rows=1.00 loops=1)
        Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
        Sort Key: (count(DISTINCT partsupp.ps_suppkey)) DESC, part.p_brand, part.p_type, part.p_size
        Sort Method: top-N heapsort  Memory: 25kB
        Buffers: shared hit=21848
        ->  GroupAggregate  (cost=43821.10..44681.76 rows=15727 width=44) (actual time=288.062..301.484 rows=18164.00 loops=1)
              Output: part.p_brand, part.p_type, part.p_size, count(DISTINCT partsupp.ps_suppkey)
              Group Key: part.p_brand, part.p_type, part.p_size
              Buffers: shared hit=21836
              ->  Sort  (cost=43821.10..43961.78 rows=56271 width=40) (actual time=288.049..290.765 rows=118387.00 loops=1)
                    Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Method: quicksort  Memory: 10046kB
                    Buffers: shared hit=21836
                    ->  Hash Join  (cost=9802.58..39381.29 rows=56271 width=40) (actual time=28.757..170.758 rows=118387.00 loops=1)
                          Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                          Hash Cond: (partsupp.ps_partkey = part.p_partkey)
                          Buffers: shared hit=21836
                          ->  Seq Scan on public.partsupp  (cost=348.00..27864.00 rows=400000 width=8) (actual time=1.531..88.358 rows=799680.00 loops=1)
                                Output: partsupp.ps_partkey, partsupp.ps_suppkey, partsupp.ps_availqty, partsupp.ps_supplycost, partsupp.ps_comment
                                Filter: (NOT (ANY (partsupp.ps_suppkey = (hashed SubPlan any_1).col1)))
                                Rows Removed by Filter: 320
                                Buffers: shared hit=17739
                                SubPlan any_1
                                  ->  Seq Scan on public.supplier  (cost=0.00..348.00 rows=1 width=4) (actual time=0.066..1.517 rows=4.00 loops=1)
                                        Output: supplier.s_suppkey
                                        Filter: ((supplier.s_comment)::text ~~ '%Customer%Complaints%'::text)
                                        Rows Removed by Filter: 9996
                                        Buffers: shared hit=223
                          ->  Hash  (cost=9097.00..9097.00 rows=28606 width=40) (actual time=27.163..27.164 rows=29610.00 loops=1)
                                Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                Buckets: 32768  Batches: 1  Memory Usage: 2400kB
                                Buffers: shared hit=4097
                                ->  Seq Scan on public.part  (cost=0.00..9097.00 rows=28606 width=40) (actual time=0.009..24.084 rows=29610.00 loops=1)
                                      Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                      Filter: ((part.p_brand <> 'Brand#34'::bpchar) AND ((part.p_type)::text !~~ 'MEDIUM BRUSHED%'::text) AND (part.p_size = ANY ('{31,27,23,22,39,11,14,6}'::integer[])))
                                      Rows Removed by Filter: 170390
                                      Buffers: shared hit=4097
Planning:
  Buffers: shared hit=161
Planning Time: 0.337 ms
Execution Time: 303.152 ms

--- [ CONFIG: geqo ] ----------------------------------------
Limit  (cost=44760.39..44760.39 rows=1 width=44) (actual time=291.424..291.426 rows=1.00 loops=1)
  Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
  Buffers: shared hit=21848
  ->  Sort  (cost=44760.39..44799.71 rows=15727 width=44) (actual time=291.423..291.425 rows=1.00 loops=1)
        Output: part.p_brand, part.p_type, part.p_size, (count(DISTINCT partsupp.ps_suppkey))
        Sort Key: (count(DISTINCT partsupp.ps_suppkey)) DESC, part.p_brand, part.p_type, part.p_size
        Sort Method: top-N heapsort  Memory: 25kB
        Buffers: shared hit=21848
        ->  GroupAggregate  (cost=43821.10..44681.76 rows=15727 width=44) (actual time=275.838..290.005 rows=18164.00 loops=1)
              Output: part.p_brand, part.p_type, part.p_size, count(DISTINCT partsupp.ps_suppkey)
              Group Key: part.p_brand, part.p_type, part.p_size
              Buffers: shared hit=21836
              ->  Sort  (cost=43821.10..43961.78 rows=56271 width=40) (actual time=275.826..278.832 rows=118387.00 loops=1)
                    Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Key: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                    Sort Method: quicksort  Memory: 10046kB
                    Buffers: shared hit=21836
                    ->  Hash Join  (cost=9802.58..39381.29 rows=56271 width=40) (actual time=27.723..158.348 rows=118387.00 loops=1)
                          Output: part.p_brand, part.p_type, part.p_size, partsupp.ps_suppkey
                          Hash Cond: (partsupp.ps_partkey = part.p_partkey)
                          Buffers: shared hit=21836
                          ->  Seq Scan on public.partsupp  (cost=348.00..27864.00 rows=400000 width=8) (actual time=1.536..84.863 rows=799680.00 loops=1)
                                Output: partsupp.ps_partkey, partsupp.ps_suppkey, partsupp.ps_availqty, partsupp.ps_supplycost, partsupp.ps_comment
                                Filter: (NOT (ANY (partsupp.ps_suppkey = (hashed SubPlan any_1).col1)))
                                Rows Removed by Filter: 320
                                Buffers: shared hit=17739
                                SubPlan any_1
                                  ->  Seq Scan on public.supplier  (cost=0.00..348.00 rows=1 width=4) (actual time=0.067..1.523 rows=4.00 loops=1)
                                        Output: supplier.s_suppkey
                                        Filter: ((supplier.s_comment)::text ~~ '%Customer%Complaints%'::text)
                                        Rows Removed by Filter: 9996
                                        Buffers: shared hit=223
                          ->  Hash  (cost=9097.00..9097.00 rows=28606 width=40) (actual time=26.146..26.146 rows=29610.00 loops=1)
                                Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                Buckets: 32768  Batches: 1  Memory Usage: 2400kB
                                Buffers: shared hit=4097
                                ->  Seq Scan on public.part  (cost=0.00..9097.00 rows=28606 width=40) (actual time=0.009..23.434 rows=29610.00 loops=1)
                                      Output: part.p_brand, part.p_type, part.p_size, part.p_partkey
                                      Filter: ((part.p_brand <> 'Brand#34'::bpchar) AND ((part.p_type)::text !~~ 'MEDIUM BRUSHED%'::text) AND (part.p_size = ANY ('{31,27,23,22,39,11,14,6}'::integer[])))
                                      Rows Removed by Filter: 170390
                                      Buffers: shared hit=4097
Planning:
  Buffers: shared hit=161
Planning Time: 0.439 ms
Execution Time: 291.732 ms
