我有一张包含近百万条记录的表格和另一张包含几百条记录的表格。我想用小表中的值更新大表,其中包含以下
UPDATE tableA ta, tableB tb
SET price=tb.price
WHERE ta.id=tb.id
使用上面的SQL语句,查询需要很长时间(超过1小时)。有没有一种方法可以让我更快地完成这项操作?
这是两个表的架构。
表A
id name descrip region price
0 a abc def 1.7
1 b abc def 2.2
3 c abc def 3.4
4 d abc def 5.3
.... . ... ... ...
999999 e abc def 4.5
1000000 f abc def 7.9
表B
id price
0 0.7
1 2.5
3 1.9
4 7.9
结果 表A
表A
id name descrip region price
0 a abc def 0.7
1 b abc def 2.5
3 c abc def 1.9
4 d abc def 7.9
.... . ... ... ...
999999 e abc def 4.5
1000000 f abc def 7.9
答案 0 :(得分:2)
如果您的tableB
有索引,涵盖id
(显然是这样) - 那么您没有其他方法可以加快速度。因为这里最慢的是物理上的价值变化。
您可以将where
更改为:
WHERE ta.id=tb.id and ta.price <> tb.price
避免将价格更新为相同值