> uuid character varying(45) NOT NULL, Just a comment. IF this is a real UUID ( RFC 4122, ISO/IEC 9834-8:2005 ) ; THEN you can use the built in "UUID Type" https://www.postgresql.org/docs/11/datatype-uuid.html
*"UUID would be the fastest because its 128 bits -> 16 bytes and comparisons are done numerically."* https://stackoverflow.com/questions/32189129/performance-difference-between-uuid-char-and-varchar-in-postgresql-table The smaller size can be important for your index size ! : *"quotes_pkey PRIMARY KEY (symbol_id, uuid);"* Imre James(王旭) <wan...@gu360.com> ezt írta (időpont: 2019. nov. 20., Sze, 9:23): > > This is the schema: > > CREATE TABLE public.quotes ( > uuid character varying(45) NOT NULL, > symbol_id smallint NOT NULL, > symbol character varying(32) NOT NULL, > p_open real NOT NULL, > p_high real NOT NULL, > p_low real NOT NULL, > p_close real NOT NULL, > amount numeric(20,2) NOT NULL, > volume numeric(20,2) NOT NULL, > pubdate timestamp with time zone NOT NULL, > chunk_id smallint NOT NULL > ) > PARTITION BY HASH (symbol_id); > ALTER TABLE ONLY public.quotes > ADD CONSTRAINT quotes_pkey PRIMARY KEY (symbol_id, uuid); > CREATE INDEX idx_201911 ON ONLY public.quotes USING btree (symbol, > chunk_id) WHERE (chunk_id >= 2595); > > ==================== > > This is explain: > > EXPLAIN (ANALYZE, BUFFERS) select p_open,p_close,p_high,p_low from quotes > where symbol='MSFT' and chunk_id >= 2595; > > QUERY PLAN > > > ------------------------------------------------------------------------------------------------------------------------------- > ---------------------------------------------- > Append (cost=0.42..22961.77 rows=12203 width=16) (actual > time=1091.462..19600.454 rows=13286 loops=1) > Buffers: shared hit=9 read=10065 > -> Index Scan using quotes_0_symbol_chunk_id_idx1 on quotes_0 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=0.295..0.295 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared hit=2 read=1 > -> Index Scan using quotes_1_symbol_chunk_id_idx1 on quotes_1 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=0.137..0.137 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared hit=2 read=1 > -> Index Scan using quotes_2_symbol_chunk_id_idx1 on quotes_2 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=0.117..0.117 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared hit=2 read=1 > -> Index Scan using quotes_3_symbol_chunk_id_idx1 on quotes_3 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=0.072..0.072 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared hit=3 > -> Index Scan using quotes_4_symbol_chunk_id_idx1 on quotes_4 > (cost=0.42..8.43 rows=1 width=16) (act > ual time=48.475..48.475 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_5_symbol_chunk_id_idx1 on quotes_5 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=45.995..45.995 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_6_symbol_chunk_id_idx1 on quotes_6 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=23.474..23.474 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_7_symbol_chunk_id_idx1 on quotes_7 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=67.030..67.030 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_8_symbol_chunk_id_idx1 on quotes_8 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=16.230..16.230 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_9_symbol_chunk_id_idx1 on quotes_9 > (cost=0.42..8.44 rows=1 width=16) (act > ual time=24.758..24.758 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_10_symbol_chunk_id_idx1 on quotes_10 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=89.762..89.762 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_11_symbol_chunk_id_idx1 on quotes_11 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=54.779..54.779 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_12_symbol_chunk_id_idx1 on quotes_12 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=19.391..19.391 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=4 > -> Index Scan using quotes_13_symbol_chunk_id_idx1 on quotes_13 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=98.137..98.137 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_14_symbol_chunk_id_idx1 on quotes_14 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=33.148..33.148 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_15_symbol_chunk_id_idx1 on quotes_15 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=12.973..12.973 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_16_symbol_chunk_id_idx1 on quotes_16 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=20.718..20.718 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_17_symbol_chunk_id_idx1 on quotes_17 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=59.091..59.091 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_18_symbol_chunk_id_idx1 on quotes_18 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=23.220..23.220 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_19_symbol_chunk_id_idx1 on quotes_19 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=8.963..8.963 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_20_symbol_chunk_id_idx1 on quotes_20 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=7.969..7.969 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_21_symbol_chunk_id_idx1 on quotes_21 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=60.775..60.775 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_22_symbol_chunk_id_idx1 on quotes_22 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=42.488..42.488 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_23_symbol_chunk_id_idx1 on quotes_23 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=46.778..46.778 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_24_symbol_chunk_id_idx1 on quotes_24 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=19.818..19.818 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_25_symbol_chunk_id_idx1 on quotes_25 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=18.332..18.332 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_26_symbol_chunk_id_idx1 on quotes_26 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=25.530..25.530 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_27_symbol_chunk_id_idx1 on quotes_27 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=17.795..17.795 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_28_symbol_chunk_id_idx1 on quotes_28 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=34.632..34.632 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_29_symbol_chunk_id_idx1 on quotes_29 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=27.877..27.877 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_30_symbol_chunk_id_idx1 on quotes_30 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=61.241..61.241 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_31_symbol_chunk_id_idx1 on quotes_31 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=19.481..19.481 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_32_symbol_chunk_id_idx1 on quotes_32 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=11.156..11.156 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_33_symbol_chunk_id_idx1 on quotes_33 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=12.092..12.092 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Bitmap Heap Scan on quotes_34 (cost=227.44..21221.83 rows=12004 > width=16) (actual time=38.646..6055.598 rows > =13286 loops=1) > Recheck Cond: (((symbol)::text = 'MSFT'::text) AND (chunk_id >= > 2595)) > Heap Blocks: exact=9422 > Buffers: shared read=9476 > -> Bitmap Index Scan on quotes_34_symbol_chunk_id_idx1 > (cost=0.00..224.44 rows=12004 width=0) (actual tim > e=32.810..32.810 rows=13286 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=54 > -> Index Scan using quotes_35_symbol_chunk_id_idx1 on quotes_35 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=13.357..13.357 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_36_symbol_chunk_id_idx1 on quotes_36 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=11.554..11.554 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_37_symbol_chunk_id_idx1 on quotes_37 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=14.527..14.527 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_38_symbol_chunk_id_idx1 on quotes_38 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=21.491..21.491 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_39_symbol_chunk_id_idx1 on quotes_39 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=38.924..38.924 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_40_symbol_chunk_id_idx1 on quotes_40 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=123.119..123.119 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_41_symbol_chunk_id_idx1 on quotes_41 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=54.460..54.460 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_42_symbol_chunk_id_idx1 on quotes_42 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=142.491..142.491 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_43_symbol_chunk_id_idx1 on quotes_43 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=20.998..20.999 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_44_symbol_chunk_id_idx1 on quotes_44 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=315.145..315.145 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_45_symbol_chunk_id_idx1 on quotes_45 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=231.026..231.026 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_46_symbol_chunk_id_idx1 on quotes_46 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=34.457..34.457 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_47_symbol_chunk_id_idx1 on quotes_47 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=31.663..31.663 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_48_symbol_chunk_id_idx1 on quotes_48 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=19.256..19.256 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_49_symbol_chunk_id_idx1 on quotes_49 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=126.794..126.794 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_50_symbol_chunk_id_idx1 on quotes_50 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=25.642..25.642 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_51_symbol_chunk_id_idx1 on quotes_51 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=24.095..24.095 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_52_symbol_chunk_id_idx1 on quotes_52 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=24.960..24.960 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_53_symbol_chunk_id_idx1 on quotes_53 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=140.896..140.896 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_54_symbol_chunk_id_idx1 on quotes_54 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=23.073..23.073 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_55_symbol_chunk_id_idx1 on quotes_55 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=29.658..29.658 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_56_symbol_chunk_id_idx1 on quotes_56 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=19.207..19.207 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_57_symbol_chunk_id_idx1 on quotes_57 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=13.298..13.298 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_58_symbol_chunk_id_idx1 on quotes_58 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=18.658..18.658 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_59_symbol_chunk_id_idx1 on quotes_59 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=17.757..17.757 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_60_symbol_chunk_id_idx1 on quotes_60 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=175.472..175.472 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_61_symbol_chunk_id_idx1 on quotes_61 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=66.575..66.575 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_62_symbol_chunk_id_idx1 on quotes_62 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=32.085..32.085 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_63_symbol_chunk_id_idx1 on quotes_63 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=59.620..59.620 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_64_symbol_chunk_id_idx1 on quotes_64 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=13.146..13.146 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_65_symbol_chunk_id_idx1 on quotes_65 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=493.484..493.484 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_66_symbol_chunk_id_idx1 on quotes_66 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=183.810..183.810 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_67_symbol_chunk_id_idx1 on quotes_67 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=17.859..17.859 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_68_symbol_chunk_id_idx1 on quotes_68 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=14.211..14.211 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_69_symbol_chunk_id_idx1 on quotes_69 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=25.271..25.271 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_70_symbol_chunk_id_idx1 on quotes_70 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=165.171..165.171 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_71_symbol_chunk_id_idx1 on quotes_71 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=28.787..28.787 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_72_symbol_chunk_id_idx1 on quotes_72 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=26.529..26.529 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_73_symbol_chunk_id_idx1 on quotes_73 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=28.887..28.887 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_74_symbol_chunk_id_idx1 on quotes_74 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=52.311..52.311 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_75_symbol_chunk_id_idx1 on quotes_75 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=26.548..26.548 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_76_symbol_chunk_id_idx1 on quotes_76 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=7.955..7.955 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_77_symbol_chunk_id_idx1 on quotes_77 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=23.569..23.569 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_78_symbol_chunk_id_idx1 on quotes_78 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=25.204..25.204 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_79_symbol_chunk_id_idx1 on quotes_79 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=18.848..18.848 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_80_symbol_chunk_id_idx1 on quotes_80 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=39.701..39.701 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_81_symbol_chunk_id_idx1 on quotes_81 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=32.622..32.622 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_82_symbol_chunk_id_idx1 on quotes_82 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=29.548..29.548 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_83_symbol_chunk_id_idx1 on quotes_83 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=27.357..27.357 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_84_symbol_chunk_id_idx1 on quotes_84 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=62.969..62.969 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_85_symbol_chunk_id_idx1 on quotes_85 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=22.842..22.842 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_86_symbol_chunk_id_idx1 on quotes_86 > (cost=0.42..8.43 rows=1 width=16) (a > ctual time=58.698..58.698 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_87_symbol_chunk_id_idx1 on quotes_87 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=25.201..25.201 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_88_symbol_chunk_id_idx1 on quotes_88 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=14.345..14.345 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_89_symbol_chunk_id_idx1 on quotes_89 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=14.012..14.012 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_90_symbol_chunk_id_idx1 on quotes_90 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=19.217..19.217 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_91_symbol_chunk_id_idx1 on quotes_91 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=35.578..35.578 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_92_symbol_chunk_id_idx1 on quotes_92 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=42.653..42.653 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_93_symbol_chunk_id_idx1 on quotes_93 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=30.164..30.165 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_94_symbol_chunk_id_idx1 on quotes_94 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=64.670..64.670 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_95_symbol_chunk_id_idx1 on quotes_95 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=82.933..82.933 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_96_symbol_chunk_id_idx1 on quotes_96 > (cost=0.43..8.44 rows=1 width=16) (a > ctual time=13.373..13.373 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_97_symbol_chunk_id_idx1 on quotes_97 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=73.041..73.041 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_98_symbol_chunk_id_idx1 on quotes_98 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=24.787..24.787 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_99_symbol_chunk_id_idx1 on quotes_99 > (cost=0.42..8.44 rows=1 width=16) (a > ctual time=22.330..22.330 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_100_symbol_chunk_id_idx1 on quotes_100 > (cost=0.42..8.44 rows=1 width=16) > (actual time=15.073..15.073 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_101_symbol_chunk_id_idx1 on quotes_101 > (cost=0.42..8.42 rows=1 width=16) > (actual time=43.450..43.450 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_102_symbol_chunk_id_idx1 on quotes_102 > (cost=0.42..8.44 rows=1 width=16) > (actual time=14.937..14.937 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_103_symbol_chunk_id_idx1 on quotes_103 > (cost=0.42..8.44 rows=1 width=16) > (actual time=46.738..46.738 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_104_symbol_chunk_id_idx1 on quotes_104 > (cost=0.42..8.44 rows=1 width=16) > (actual time=20.980..20.980 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_105_symbol_chunk_id_idx1 on quotes_105 > (cost=0.42..8.44 rows=1 width=16) > (actual time=39.503..39.503 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_106_symbol_chunk_id_idx1 on quotes_106 > (cost=0.42..8.44 rows=1 width=16) > (actual time=19.778..19.779 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_107_symbol_chunk_id_idx1 on quotes_107 > (cost=0.42..8.44 rows=1 width=16) > (actual time=14.042..14.042 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_108_symbol_chunk_id_idx1 on quotes_108 > (cost=0.43..8.44 rows=1 width=16) > (actual time=14.986..14.986 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_109_symbol_chunk_id_idx1 on quotes_109 > (cost=0.42..8.43 rows=1 width=16) > (actual time=27.951..27.951 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_110_symbol_chunk_id_idx1 on quotes_110 > (cost=0.42..8.44 rows=1 width=16) > (actual time=30.855..30.855 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_111_symbol_chunk_id_idx1 on quotes_111 > (cost=0.42..8.44 rows=1 width=16) > (actual time=25.702..25.702 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_112_symbol_chunk_id_idx1 on quotes_112 > (cost=0.42..8.44 rows=1 width=16) > (actual time=25.363..25.363 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_113_symbol_chunk_id_idx1 on quotes_113 > (cost=0.42..8.44 rows=1 width=16) > (actual time=301.515..301.515 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_114_symbol_chunk_id_idx1 on quotes_114 > (cost=0.42..8.44 rows=1 width=16) > (actual time=275.201..275.201 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_115_symbol_chunk_id_idx1 on quotes_115 > (cost=0.42..8.44 rows=1 width=16) > (actual time=39.636..39.636 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_116_symbol_chunk_id_idx1 on quotes_116 > (cost=0.42..8.44 rows=1 width=16) > (actual time=13.036..13.036 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_117_symbol_chunk_id_idx1 on quotes_117 > (cost=0.42..8.44 rows=1 width=16) > (actual time=17.091..17.091 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_118_symbol_chunk_id_idx1 on quotes_118 > (cost=0.42..8.44 rows=1 width=16) > (actual time=100.450..100.450 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_119_symbol_chunk_id_idx1 on quotes_119 > (cost=0.42..8.44 rows=1 width=16) > (actual time=90.931..90.931 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_120_symbol_chunk_id_idx1 on quotes_120 > (cost=0.42..8.43 rows=1 width=16) > (actual time=30.150..30.150 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_121_symbol_chunk_id_idx1 on quotes_121 > (cost=0.42..8.44 rows=1 width=16) > (actual time=28.342..28.342 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_122_symbol_chunk_id_idx1 on quotes_122 > (cost=0.42..8.44 rows=1 width=16) > (actual time=11.281..11.281 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_123_symbol_chunk_id_idx1 on quotes_123 > (cost=0.42..8.44 rows=1 width=16) > (actual time=27.195..27.195 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_124_symbol_chunk_id_idx1 on quotes_124 > (cost=0.42..8.44 rows=1 width=16) > (actual time=17.598..17.598 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_125_symbol_chunk_id_idx1 on quotes_125 > (cost=0.42..8.44 rows=1 width=16) > (actual time=13.197..13.197 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_126_symbol_chunk_id_idx1 on quotes_126 > (cost=0.42..8.44 rows=1 width=16) > (actual time=29.288..29.288 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_127_symbol_chunk_id_idx1 on quotes_127 > (cost=0.42..8.44 rows=1 width=16) > (actual time=12.994..12.994 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_128_symbol_chunk_id_idx1 on quotes_128 > (cost=0.42..8.44 rows=1 width=16) > (actual time=16.397..16.397 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_129_symbol_chunk_id_idx1 on quotes_129 > (cost=0.42..8.44 rows=1 width=16) > (actual time=20.008..20.008 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_130_symbol_chunk_id_idx1 on quotes_130 > (cost=0.42..8.44 rows=1 width=16) > (actual time=17.144..17.144 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_131_symbol_chunk_id_idx1 on quotes_131 > (cost=0.42..8.44 rows=1 width=16) > (actual time=19.388..19.388 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_132_symbol_chunk_id_idx1 on quotes_132 > (cost=0.42..8.43 rows=1 width=16) > (actual time=11.343..11.343 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_133_symbol_chunk_id_idx1 on quotes_133 > (cost=0.42..8.44 rows=1 width=16) > (actual time=15.873..15.873 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_134_symbol_chunk_id_idx1 on quotes_134 > (cost=0.42..8.44 rows=1 width=16) > (actual time=13.600..13.600 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_135_symbol_chunk_id_idx1 on quotes_135 > (cost=0.42..8.43 rows=1 width=16) > (actual time=132.991..132.991 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_136_symbol_chunk_id_idx1 on quotes_136 > (cost=0.42..8.44 rows=1 width=16) > (actual time=5.269..5.270 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_137_symbol_chunk_id_idx1 on quotes_137 > (cost=0.42..8.44 rows=1 width=16) > (actual time=24.996..24.996 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_138_symbol_chunk_id_idx1 on quotes_138 > (cost=0.42..8.44 rows=1 width=16) > (actual time=143.878..143.878 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_139_symbol_chunk_id_idx1 on quotes_139 > (cost=0.42..8.44 rows=1 width=16) > (actual time=286.335..286.336 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_140_symbol_chunk_id_idx1 on quotes_140 > (cost=0.42..8.43 rows=1 width=16) > (actual time=48.946..48.946 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_141_symbol_chunk_id_idx1 on quotes_141 > (cost=0.42..8.44 rows=1 width=16) > (actual time=26.577..26.577 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_142_symbol_chunk_id_idx1 on quotes_142 > (cost=0.42..8.44 rows=1 width=16) > (actual time=82.622..82.623 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_143_symbol_chunk_id_idx1 on quotes_143 > (cost=0.42..8.44 rows=1 width=16) > (actual time=9.932..9.932 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_144_symbol_chunk_id_idx1 on quotes_144 > (cost=0.42..8.44 rows=1 width=16) > (actual time=22.535..22.535 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_145_symbol_chunk_id_idx1 on quotes_145 > (cost=0.42..8.44 rows=1 width=16) > (actual time=13.366..13.366 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_146_symbol_chunk_id_idx1 on quotes_146 > (cost=0.42..8.44 rows=1 width=16) > (actual time=14.648..14.648 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_147_symbol_chunk_id_idx1 on quotes_147 > (cost=0.42..8.44 rows=1 width=16) > (actual time=19.620..19.620 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_148_symbol_chunk_id_idx1 on quotes_148 > (cost=0.42..8.44 rows=1 width=16) > (actual time=12.460..12.460 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_149_symbol_chunk_id_idx1 on quotes_149 > (cost=0.42..8.44 rows=1 width=16) > (actual time=81.010..81.010 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_150_symbol_chunk_id_idx1 on quotes_150 > (cost=0.42..8.44 rows=1 width=16) > (actual time=52.261..52.261 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_151_symbol_chunk_id_idx1 on quotes_151 > (cost=0.42..8.44 rows=1 width=16) > (actual time=140.876..140.876 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_152_symbol_chunk_id_idx1 on quotes_152 > (cost=0.42..8.44 rows=1 width=16) > (actual time=9.724..9.724 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_153_symbol_chunk_id_idx1 on quotes_153 > (cost=0.42..8.44 rows=1 width=16) > (actual time=111.923..111.923 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_154_symbol_chunk_id_idx1 on quotes_154 > (cost=0.42..8.44 rows=1 width=16) > (actual time=206.109..206.109 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_155_symbol_chunk_id_idx1 on quotes_155 > (cost=0.42..8.44 rows=1 width=16) > (actual time=393.460..393.460 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_156_symbol_chunk_id_idx1 on quotes_156 > (cost=0.42..8.44 rows=1 width=16) > (actual time=231.433..231.433 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_157_symbol_chunk_id_idx1 on quotes_157 > (cost=0.42..8.44 rows=1 width=16) > (actual time=246.102..246.102 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_158_symbol_chunk_id_idx1 on quotes_158 > (cost=0.42..8.44 rows=1 width=16) > (actual time=316.520..316.520 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_159_symbol_chunk_id_idx1 on quotes_159 > (cost=0.42..8.44 rows=1 width=16) > (actual time=194.797..194.797 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_160_symbol_chunk_id_idx1 on quotes_160 > (cost=0.42..8.43 rows=1 width=16) > (actual time=60.826..60.827 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_161_symbol_chunk_id_idx1 on quotes_161 > (cost=0.42..8.44 rows=1 width=16) > (actual time=207.193..207.193 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_162_symbol_chunk_id_idx1 on quotes_162 > (cost=0.42..8.44 rows=1 width=16) > (actual time=596.949..596.949 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_163_symbol_chunk_id_idx1 on quotes_163 > (cost=0.42..8.44 rows=1 width=16) > (actual time=370.000..370.000 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_164_symbol_chunk_id_idx1 on quotes_164 > (cost=0.42..8.44 rows=1 width=16) > (actual time=447.076..447.076 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_165_symbol_chunk_id_idx1 on quotes_165 > (cost=0.42..8.44 rows=1 width=16) > (actual time=187.770..187.770 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_166_symbol_chunk_id_idx1 on quotes_166 > (cost=0.42..8.44 rows=1 width=16) > (actual time=123.740..123.740 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_167_symbol_chunk_id_idx1 on quotes_167 > (cost=0.42..8.44 rows=1 width=16) > (actual time=20.430..20.430 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_168_symbol_chunk_id_idx1 on quotes_168 > (cost=0.42..8.44 rows=1 width=16) > (actual time=16.486..16.486 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_169_symbol_chunk_id_idx1 on quotes_169 > (cost=0.42..8.44 rows=1 width=16) > (actual time=34.487..34.487 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_170_symbol_chunk_id_idx1 on quotes_170 > (cost=0.42..8.44 rows=1 width=16) > (actual time=16.772..16.772 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_171_symbol_chunk_id_idx1 on quotes_171 > (cost=0.42..8.44 rows=1 width=16) > (actual time=21.849..21.849 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_172_symbol_chunk_id_idx1 on quotes_172 > (cost=0.42..8.44 rows=1 width=16) > (actual time=17.413..17.413 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_173_symbol_chunk_id_idx1 on quotes_173 > (cost=0.42..8.43 rows=1 width=16) > (actual time=15.372..15.372 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_174_symbol_chunk_id_idx1 on quotes_174 > (cost=0.42..8.43 rows=1 width=16) > (actual time=24.842..24.842 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_175_symbol_chunk_id_idx1 on quotes_175 > (cost=0.42..8.44 rows=1 width=16) > (actual time=61.523..61.523 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_176_symbol_chunk_id_idx1 on quotes_176 > (cost=0.42..8.44 rows=1 width=16) > (actual time=17.337..17.337 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_177_symbol_chunk_id_idx1 on quotes_177 > (cost=0.42..8.44 rows=1 width=16) > (actual time=33.067..33.067 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_178_symbol_chunk_id_idx1 on quotes_178 > (cost=0.42..8.44 rows=1 width=16) > (actual time=28.576..28.576 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_179_symbol_chunk_id_idx1 on quotes_179 > (cost=0.42..8.44 rows=1 width=16) > (actual time=678.142..678.142 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_180_symbol_chunk_id_idx1 on quotes_180 > (cost=0.42..8.44 rows=1 width=16) > (actual time=157.393..157.393 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_181_symbol_chunk_id_idx1 on quotes_181 > (cost=0.42..8.44 rows=1 width=16) > (actual time=36.361..36.361 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_182_symbol_chunk_id_idx1 on quotes_182 > (cost=0.42..8.44 rows=1 width=16) > (actual time=28.271..28.271 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_183_symbol_chunk_id_idx1 on quotes_183 > (cost=0.42..8.43 rows=1 width=16) > (actual time=146.265..146.265 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_184_symbol_chunk_id_idx1 on quotes_184 > (cost=0.42..8.43 rows=1 width=16) > (actual time=16.792..16.793 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_185_symbol_chunk_id_idx1 on quotes_185 > (cost=0.42..8.44 rows=1 width=16) > (actual time=144.218..144.218 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_186_symbol_chunk_id_idx1 on quotes_186 > (cost=0.42..8.44 rows=1 width=16) > (actual time=81.750..81.750 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_187_symbol_chunk_id_idx1 on quotes_187 > (cost=0.42..8.44 rows=1 width=16) > (actual time=111.781..111.781 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_188_symbol_chunk_id_idx1 on quotes_188 > (cost=0.42..8.44 rows=1 width=16) > (actual time=24.841..24.841 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_189_symbol_chunk_id_idx1 on quotes_189 > (cost=0.42..8.44 rows=1 width=16) > (actual time=54.262..54.262 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_190_symbol_chunk_id_idx1 on quotes_190 > (cost=0.42..8.43 rows=1 width=16) > (actual time=22.917..22.917 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_191_symbol_chunk_id_idx1 on quotes_191 > (cost=0.42..8.44 rows=1 width=16) > (actual time=43.056..43.056 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_192_symbol_chunk_id_idx1 on quotes_192 > (cost=0.42..8.44 rows=1 width=16) > (actual time=32.850..32.850 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_193_symbol_chunk_id_idx1 on quotes_193 > (cost=0.42..8.44 rows=1 width=16) > (actual time=154.957..154.957 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_194_symbol_chunk_id_idx1 on quotes_194 > (cost=0.42..8.44 rows=1 width=16) > (actual time=29.994..29.994 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_195_symbol_chunk_id_idx1 on quotes_195 > (cost=0.42..8.44 rows=1 width=16) > (actual time=143.209..143.209 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_196_symbol_chunk_id_idx1 on quotes_196 > (cost=0.42..8.44 rows=1 width=16) > (actual time=22.891..22.891 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_197_symbol_chunk_id_idx1 on quotes_197 > (cost=0.42..8.44 rows=1 width=16) > (actual time=162.157..162.157 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_198_symbol_chunk_id_idx1 on quotes_198 > (cost=0.42..8.44 rows=1 width=16) > (actual time=19.513..19.513 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > -> Index Scan using quotes_199_symbol_chunk_id_idx1 on quotes_199 > (cost=0.42..8.44 rows=1 width=16) > (actual time=25.230..25.230 rows=0 loops=1) > Index Cond: ((symbol)::text = 'MSFT'::text) > Buffers: shared read=3 > Planning Time: 30.029 ms > Execution Time: 19627.821 ms > (608 rows) > > > > ==================== > > These are the main changes I made: > > 1)change cache_buffers size to 30% of system memory. > 2) > max_parallel_maintenance_workers = 16 # taken from max_parallel_workers > max_parallel_workers_per_gather = 16 # taken from max_parallel_workers > max_parallel_workers = 32 # maximum number of max_worker_processes that > 3)disable autovacuum on this slave node > 4) > work_mem = 4MB # min 64kB > maintenance_work_mem = 2048MB # min 1MB > > > > Thanks in advance! >