使用大表上的连接进行更新-性能提示?

问题描述

曾经苦苦挣扎,却从未完成

update votings v
set voter_id = (select pv.number from voters pv WHERE pv.person_id = v.person_id);

该表当前有9600万条记录

select count(0) from votings;
  count   
----------
 96575239
(1 registro)

更新显然正在使用索引

explain update votings v                             
set voter_id = (select pv.number from voters pv WHERE pv.rl_person_id = v.person_id);
                                                    QUERY PLAN                                                     
-------------------------------------------------------------------------------------------------------------------
 Update on votings v  (cost=0.00..788637465.40 rows=91339856 width=1671)
   ->  Seq Scan on votings v  (cost=0.00..788637465.40 rows=91339856 width=1671)
         SubPlan 1
           ->  Index Scan using idx_voter_rl_person_id on voters pv  (cost=0.56..8.58 rows=1 width=9)
                 Index Cond: (rl_person_id = v.person_id)
(5 registros)

这是我要投票的索引

Índices:
    "votings_pkey" PRIMARY KEY,btree (id)
    "votings_election_id_voter_id_key" UNIQUE CONSTRAINT,btree (election_id,person_id)
    "votings_external_id_external_source_key" UNIQUE CONSTRAINT,btree (external_id,external_source)
    "idx_votings_updated_at" btree (updated_at DESC)
    "idx_votings_vote_party" btree (vote_party)
    "idx_votings_vote_state_vote_party" btree (vote_state,vote_party)
    "idx_votings_voter_id" btree (person_id)
Restrições de chave estrangeira:
    "votings_election_id_fkey" FOREIGN KEY (election_id) REFERENCES elections(id)
    "votings_voter_id_fkey" FOREIGN KEY (person_id) REFERENCES people_all(id)

伙计们,在更新运行缓慢中发挥最大作用的任何想法?行数或正在使用的联接?

解决方法

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

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

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