根据公共值将数据从一个表提取到另一个表



我有一个表,它看起来像这样

表答:

Voter_id        Id
----------------------
null       |    DEPT 1f7h
null       |    DEPT 3k9n
null       |    DEPT 2lp0
null       |    DEPT 2f6k
(250,000 rows like this)

table A有近25万行。

我有另一个表table B它看起来像这样

Name_of_variable |Id      |     value_of_variable
--------------------------------------------------
Voter_id          |DEPT 1f7h |      12OK9MJL
First_Name        |DEPT adas |      Umar
DOB               |DEPT opwe |      20-02-199
Age               |DEPT jqwq |      24
Voter_id          |DEPT 90aa |      189H8MLI
(almost 1 million rows like this)

表B id列有索引

我想用表B列填充表A的Voter_id列,使表A的Voter_id列=表B的value_of_variable,其中表A的Name_of_variable为'Voter_id', TableA.Id=TableB.Id

我已经使用这个查询来提取数据,它在我的开发数据库上工作良好,在表a中有15,000条记录。我想知道我是否可以进一步优化它,因为它可能在更大的数据上不起作用。

update TableA 
set Voter_id =(select value_of_variable 
from TableB 
where Name_of_variable like 'Voter_id' 
and  TableA.Id = TableB.id 
limit 1);

你需要在TableA上创建一个索引。Id

CREATE UNIQUE INDEX Id_idx ON TableA (Id);

如果你的TableA。Id可能包含重复条目,请删除UNIQUE

你也可以使用

CREATE UNIQUE INDEX Id_idx ON TableB (Id) INCLUDE (Name_of_variable);

我已经解决了这个问题,通过改变我的更新查询,像这样

update TableA set Voter_id = TableB.value_of_variable 
from TableB where TableA.id = TableB.id and TableB.Name_of_variable='Voter_id';

最新更新