如何提高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 )`
会不会快一点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个太天真了.
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”" 会有什么好处.