我有一个包含5万亿行的表,但在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)
但这会对5Million行中的每一行进行查找并花费太长时间(如果查找需要一秒钟,那就是〜5Million秒,而不是9000秒)。
答案 0 :(得分:3)
尝试使用INNER JOIN
查询,它应该更快
UPDATE t
INNER JOIN lookuptable b
ON b.lookupKey = t.A
SET t.B= b.lookupValue