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






Reply via email to