如何提高Oracle Update的性能?


如何提高Oracle Update的性能?特别是在多表关联的情况下,如果提高其性能?

另:


 `update 表a set a.字段1 = (select b.字段1 from 表b where a.字段2=b.字段2 and a.字段3=b.字段3) where exists(select 1 from 表b where a.字段2=b.字段2 and a.字段3=b.字段3)`

类似于这样的情况下,如果我事先将需要一一判断的字段字段2和字段3用字符串拼接的方法,另存放一个字段“字段2字段3”(这个可以在代码中处理),而使用


 `update 表a set a.字段1 = (select b.字段1 from 表b where a.字段2字段3=b.字段2字段3) where exists(select 1 from 表b where a.字段2字段3=b.字段2字段3 )`

会不会快一点?

数据库 数据库性能优化 oracle

doudan 11 years, 5 months ago

这个太天真了.
1. 目测此sql里的 where 完全没有必要.
2. 效率取决于
a. 是否可以用到索引, 这里可以选择在 字段2, 字段3上建单独索引或联合索引, 看具体效果.;
b. 如果不能用索引, 全表扫描的效率. 这取决与磁盘效率, 判断 "a.字段2=b.字段2 and a.字段3=b.字段3" 或是 "a.字段2字段3=b.字段2字段3" 基本不会有区别.

坦白说, 没看出"另存放一个字段“字段2字段3”" 会有什么好处.

名字真好吃 answered 11 years, 5 months ago

Your Answer