首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Oracle视图的BatchUpdate

使用Oracle视图的BatchUpdate
EN

Stack Overflow用户
提问于 2013-03-04 01:45:44
回答 1查看 122关注 0票数 0

我有一个复杂的Oracle视图,它需要大约2-3秒来执行。

我正在尝试将Oracle视图中的值插入到表中。

我使用JdbcTemplate BatchUpdate()将多个值插入到表中。

在BatchUpdate()中,PreparedStatement用于设置值。

使用Oracle视图会导致任何性能问题吗?

通过使用PreparedStatement,可以预编译SQL语句。但是对于视图,每次触发insert查询时都会执行视图吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 02:53:11

视图只是SQL语句。它们并不比底层的SQL查询更慢或更快。

但是,当使用构建在其他复杂视图之上的复杂视图(多表连接和聚合)时,优化器可能会感到困惑,并试图欺骗自己,从而导致真正糟糕的执行计划。如果你没有适当的约束,引用完整性,问题往往会更严重。

最后要注意的是,如果您只是将数据从数据库中拉出来放回数据库中,那么在数据库中执行整个操作可能会获得更好的性能。例如,假设您从数据库中提取“订单行”,然后使用"order Total Qty“更新"order header”。在这种情况下,您可能应该执行以下操作:

代码语言:javascript
复制
merge
 into order_header h
using (select order_id, sum(order_qty) as order_total_qty
         from order_line
        group by order_id
       ) l
   on (h.order_id = l.order_id)
when matched then
   update
      set h.order_total_qty = l.order_total_qty;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15188644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档