可能已经有人问过了,但使用“IN”等关键词进行搜索并不起作用。
这是我的查询:
要简单概括一下:我想将所有在订单表中的顾客(无论是哪一列)的类型(只是int类型)设为2。
这是我的查询:
UPDATE tblCustomer SET type = 2
WHERE idcustomer
IN (SELECT fidcustomer1
FROM tblorder
UNION
SELECT fidcustomer2
FROM tblorder
)
要简单概括一下:我想将所有在订单表中的顾客(无论是哪一列)的类型(只是int类型)设为2。
我的测试数据表行不超过几百行,但查询需要好几分钟才能运行完(即使没有UNION,这好像也没有什么区别),显然对于每一个顾客的行都要重新执行内部查询。我可以重写成一个SELECT DISTINCT(id)和几百个单行更新,以及用ODBC访问所使用的语言来处理逻辑,但这只是一个 hack。
如何正确地重写它呢?
补充说明: 我想更新的表包含大量相对较大的BYTEA blob,每行几MB。它们被设置为Storage External或 Extended,但我想知道这是否会使顺序扫描变慢。所有更新似乎都需要很长时间,而不仅仅是这一个。