2011-06-29 107 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 

避免更新價格相同的值