我有一个表,它看起来像这样
表答:
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';