0

我有一个包含 500 万行的表,但 A 列中只有大约 9000 个不同的值,并且需要使用另一个表的查找来填充另一列 (B)。我需要运行类似的东西:

UPDATE t SET t.B=(SELECT lookupValue FROM lookuptable WHERE b.lookupKey = X) WHERE t.A=X

其中 X 采用不同的 9000 个值中的每一个。

是否有一个查询可以做到这一点,还是我必须求助于应用程序或存储过程?

我试着一次做很多:

UPDATE t SET B=(SELECT lookupValue FROM lookuptable WHERE b.lookupKey = t.A)

但这会对 500 万行中的每一行进行查找,并且花费的时间太长(如果查找需要一秒钟,那就是 ~500 万秒,而不是 9000 秒)。

4

1 回答 1

3

尝试INNER JOIN查询,它应该更快

UPDATE t 
INNER JOIN lookuptable b
ON b.lookupKey = t.A
SET t.B= b.lookupValue
于 2013-06-06T20:45:10.543 回答