Hi, I have a query performance issue, it takes a long time, and not even getting explain analyze the output. this query joining on 3 tables which have around a - 176223509 b - 286887780 c - 214219514
explainselect Count(a."individual_entity_proxy_id")from "prospect" ainner join "individual_demographic" bon a."individual_entity_proxy_id" = b."individual_entity_proxy_id"inner join "household_demographic" c on a."household_entity_proxy_id" = c."household_entity_proxy_id"where (((a."last_contacted_anychannel_dttm" is null) or (a."last_contacted_anychannel_dttm" < TIMESTAMP '2020-11-23 0:00:00.000000')) and (a."shared_paddr_with_customer_ind" = 'N') and (a."profane_wrd_ind" = 'N') and (a."tmo_ofnsv_name_ind" = 'N') and (a."has_individual_address" = 'Y') and (a."has_last_name" = 'Y') and (a."has_first_name" = 'Y')) and ((b."tax_bnkrpt_dcsd_ind" = 'N') and (b."govt_prison_ind" = 'N') and (b."cstmr_prspct_ind" = 'Prospect')) and (( c."hspnc_lang_prfrnc_cval" in ('B', 'E', 'X') ) or (c."hspnc_lang_prfrnc_cval" is null));-- Explain output "Finalize Aggregate (cost=32813309.28..32813309.29 rows=1 width=8)"" -> Gather (cost=32813308.45..32813309.26 rows=8 width=8)"" Workers Planned: 8"" -> Partial Aggregate (cost=32812308.45..32812308.46 rows=1 width=8)"" -> Merge Join (cost=23870130.00..32759932.46 rows=20950395 width=8)"" Merge Cond: (a.individual_entity_proxy_id = b.individual_entity_proxy_id)"" -> Sort (cost=23870127.96..23922503.94 rows=20950395 width=8)"" Sort Key: a.individual_entity_proxy_id"" -> Hash Join (cost=13533600.42..21322510.26 rows=20950395 width=8)"" Hash Cond: (a.household_entity_proxy_id = c.household_entity_proxy_id)"" -> Parallel Seq Scan on prospect a (cost=0.00..6863735.60 rows=22171902 width=16)"" Filter: (((last_contacted_anychannel_dttm IS NULL) OR (last_contacted_anychannel_dttm < '2020-11-23 00:00:00'::timestamp without time zone)) AND (shared_paddr_with_customer_ind = 'N'::bpchar) AND (profane_wrd_ind = 'N'::bpchar) AND (tmo_ofnsv_name_ind = 'N'::bpchar) AND (has_individual_address = 'Y'::bpchar) AND (has_last_name = 'Y'::bpchar) AND (has_first_name = 'Y'::bpchar))"" -> Hash (cost=10801715.18..10801715.18 rows=166514899 width=8)"" -> Seq Scan on household_demographic c (cost=0.00..10801715.18 rows=166514899 width=8)"" Filter: (((hspnc_lang_prfrnc_cval)::text = ANY ('{B,E,X}'::text[])) OR (hspnc_lang_prfrnc_cval IS NULL))"" -> Index Only Scan using indx_individual_demographic_prxyid_taxind_prspctind_prsnind on individual_demographic b (cost=0.57..8019347.13 rows=286887776 width=8)"" Index Cond: ((tax_bnkrpt_dcsd_ind = 'N'::bpchar) AND (cstmr_prspct_ind = 'Prospect'::text) AND (govt_prison_ind = 'N'::bpchar))" Tables ddl are attached in dbfiddle -- Postgres 11 | db<>fiddle | | | | Postgres 11 | db<>fiddle Free online SQL environment for experimenting and sharing. | | | Server configuration is: Version: 10.11RAM - 320GBvCPU - 32 "maintenance_work_mem" 256MB"work_mem" 1GB"shared_buffers" 64GB Any suggestions? Thanks,Rj