add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE
CREATE TABLE
CREATE TABLE
schemaname tablename indexname tablespace indexdef
public complex complex_pkey null CREATE UNIQUE INDEX complex_pkey ON public.complex USING btree (complex_id)
public complex_in complex_in_pkey null CREATE UNIQUE INDEX complex_in_pkey ON public.complex_in USING btree (input, complex_id)
public complex_groupcond complex_groupcond_pkey null CREATE UNIQUE INDEX complex_groupcond_pkey ON public.complex_groupcond USING btree (cond, complex_id)
SELECT 3
CREATE TABLE
schemaname tablename indexname tablespace indexdef
public values values_pkey null CREATE UNIQUE INDEX values_pkey ON public."values" USING btree (name, value_id)
SELECT 1
CREATE FUNCTION
INSERT 0 12
INSERT 0 24
INSERT 0 30000
ANALYZE
INSERT 0 20000
INSERT 0 2
INSERT 0 2
INSERT 0 4
ANALYZE
QUERY PLAN
HashAggregate (cost=37101.37..37241.48 rows=14011 width=51) (actual time=1063.068..1116.203 rows=50000 loops=1)
  Group Key: "values".value_id, "values".name, (string_agg((jsonb_path_query_first(("values".value)::jsonb, ((('$['::text || ((complex_cond.num - 1))::text) || ']'::text))::jsonpath, '{}'::jsonb, false))::text, '_'::text) OVER (?))
  Batches: 5 Memory Usage: 4145kB Disk Usage: 7728kB
  -> Unique (cost=1.92..34649.41 rows=140112 width=64) (actual time=3.441..924.772 rows=260000 loops=1)
        -> WindowAgg (cost=1.92..32691.07 rows=261113 width=64) (actual time=3.438..852.363 rows=280000 loops=1)
              -> Incremental Sort (cost=1.92..18982.63 rows=261113 width=76) (actual time=0.105..290.287 rows=280000 loops=1)
                    Sort Key: "values".name, "values".value_id, complex_in.complex_id
                    Presorted Key: "values".name, "values".value_id
                    Full-sort Groups: 7917 Sort Method: quicksort Average Memory: 32kB Peak Memory: 32kB
                    -> Merge Join (cost=1.63..8578.21 rows=261113 width=76) (actual time=0.057..102.297 rows=280000 loops=1)
                          Merge Cond: (("values".name)::text = (complex_in.input)::text)
                          -> Index Scan using values_pkey on "values" (cost=0.41..4521.22 rows=50000 width=55) (actual time=0.011..29.658 rows=50000 loops=1)
                          -> Materialize (cost=1.22..15.36 rows=26 width=26) (actual time=0.041..15.844 rows=270001 loops=1)
                                -> Nested Loop Left Join (cost=1.22..15.30 rows=26 width=26) (actual time=0.039..0.100 rows=28 loops=1)
                                      Join Filter: ((complex_cond.complex_id)::text = (complex_in.complex_id)::text)
                                      Rows Removed by Join Filter: 100
                                      -> Index Only Scan using complex_in_pkey on complex_in (cost=0.14..12.53 rows=26 width=18) (actual time=0.003..0.028 rows=26 loops=1)
                                            Heap Fetches: 26
                                      -> Materialize (cost=1.08..1.22 rows=4 width=25) (actual time=0.001..0.002 rows=4 loops=26)
                                            -> Subquery Scan on complex_cond (cost=1.08..1.20 rows=4 width=25) (actual time=0.032..0.038 rows=4 loops=1)
                                                  -> WindowAgg (cost=1.08..1.16 rows=4 width=30) (actual time=0.032..0.036 rows=4 loops=1)
                                                        -> Sort (cost=1.08..1.09 rows=4 width=22) (actual time=0.018..0.020 rows=4 loops=1)
                                                              Sort Key: complex_groupcond.complex_id, complex_groupcond.cond
                                                              Sort Method: quicksort Memory: 25kB
                                                              -> Seq Scan on complex_groupcond (cost=0.00..1.04 rows=4 width=22) (actual time=0.009..0.010 rows=4 loops=1)
Planning Time: 1.025 ms
Execution Time: 1119.345 ms
EXPLAIN