2011-06-29 108 views
1

我有一张有近100万条记录的表格和另外一张有几百条记录的表格。我想与值从小表具有以下如何优化UPDATE语句?

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 

回答

2

如果您tableB有指标,塔t包括id(显然是) - 那么你没有其他方法来加速它。由于这里最慢的事情是价值的物理变化。

也许你可以改变你的where到:

WHERE ta.id=tb.id and ta.price <> tb.price 

避免更新价格相同的值