在一个ASP程序中要更新一个表t,大概有20万条数据需要更新,总数据量在100W以上。在更新的时候,需要到另外一个表中c检索与t.a,t.b相匹配的字段。
现有的查询逻辑是
UPDATE t SET .... WHERE t.A || t.B IN (SELECT c.a || c.b from c where c.ym='200706')这个对c表的子查询大概能检索出150-200条记录。这个代码在开发环境下没有问题,但是这样在客户的测试服务器上出现ORA-01013错误。有没有好地解决办法?这个系统规定不能用任何存储过程,触发器,视图等。当然更不可能更改数据库的任何参数。请大家提供思路,尤其是做过ASP对大数据量处理的朋友。谢谢。
现有的查询逻辑是
UPDATE t SET .... WHERE t.A || t.B IN (SELECT c.a || c.b from c where c.ym='200706')这个对c表的子查询大概能检索出150-200条记录。这个代码在开发环境下没有问题,但是这样在客户的测试服务器上出现ORA-01013错误。有没有好地解决办法?这个系统规定不能用任何存储过程,触发器,视图等。当然更不可能更改数据库的任何参数。请大家提供思路,尤其是做过ASP对大数据量处理的朋友。谢谢。
(select c.col1,c.col2 from c where c.a=t.a and c.b=t.b and c.ym='200706')
这样用效率非常低,强烈不推荐(不仅索引不起作用,还要把所有记录的A,B进行连接运算)
本人认为应该这样UPDATE t SET
...
WHERE
Exists(select a from c where c.ym='200706' and t.A=c.a and t.B=c.b)