Postgres Join 查询永远挂起

问题描述

我有这两个表(由于安全原因不能共享)这两个表每个表都有近 250,000 条记录,使用 Postgres 9.6 及以下版本是执行查询计划。此查询永远挂起。

有什么快速帮助吗?

CREATE TABLE test.TableA (
    last_update_date date NULL,src_party_country_id varchar(255) NULL,src_party_id varchar(255) NULL,country_cd varchar(255) NULL,lifecycle_status_cd varchar(10) NULL DEFAULT 'A'::character varying,violated varchar(1) NULL
);



CREATE TABLE test.TableB (
    last_update_date timestamp NULL,"name" varchar(300) NULL,.....
);


TableA
ACCT    PROCID  1499    A   1970-01-01 00:00:00 MIGHTY      PDF 19582   3951931 A   DMIGHTY Y
ACCT    PROCID  1525    A   2019-05-17 00:00:00 MIGHTY  79175   PDF 19583   10005322    A   DMIGHTY Y
-- There Could be multiple duplicate records or no records maching 

TableB
ACCT    PROCID  1525    A   17-05-19 12:00:00   MIGHTY  79175   PDF 630 10005322    A   DMIGHTY N
ACCT    PROCID  1499    A   01-01-70 12:00:00   MIGHTY      PDF 629 3951931 A   DMIGHTY N 

这里是解释-

nested Loop  (cost=0.42..1258454.96 rows=489356232944 width=1409)
  ->  Seq Scan on TableA child  (cost=0.00..7323.64 rows=233382 width=60)
        Filter: (((src_system)::text = 'ABC'::text) AND ((isBuly)::text = 'N'::text) AND ((status)::text = ANY ('{A,P,T,X}'::text[])))
  ->  Index Scan using TableA_id_idx on c_l_party parent  (cost=0.42..3.59 rows=177 width=1349)
        Index Cond: ((src_party_id)::text = (child.src_party_id)::text) 

即使是这个查询也被拖​​延了

SELECT  count(*) FROM  
       test.TableA_COUNTRY CHILD  
       test.TableB PARENT,WHERE  
       PARENT.violated = CHILD.violated;
       AND CHILD.SRC_SYstem = 'ABC'  
       AND CHILD.isBuly = 'N' ;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)