争取每天写一篇文章,一起来共同进步,共同探讨!

   这个主题含义是啥?

        主要是解决性能问题;但是要求很难以用语言来描述的;不是普通的 select * from view v where v.column= 参数这种!     而是类似 select * from view(参数) v where 查询条件 这种!

做技术的人应该能明白;不然你就可以跳过这个文章看其他文章了!

先来看一个需求:

最近在做一个需求,要找出单个用户参与的所有业务,比如销售订单,采购订单,以及crm里的单等等等…..

很自然会想到的解决方案,这样做一个视图;

create or replace view cux_user_Business
as
select a.created_by ,a.line_Id,’SO’ Qtype from ont.oe_order_lines_all a
union
select b.created_by,b.po_line_Id,’PO’ Qtype from po.po_lines_all b
union
select mmt.created_by,mmt.transaction_id,’Transaction’ Qtype from inv.mtl_material_transactions mmt

然后 select * from cux_user_Business where created_by=74373 and ……其他条件

 

然而 Game 没有OVER ,但是用户投诉就上来了=>因为速度很慢很慢,

1: 这样的技术多了,会导致占用很多资源,最终导致系统慢,还不知道怎么查原因

2: ——DBA最头疼啦  那么这里就引出了我们的主题,如果调用视图的时候,里面的表就用user_id去查询,速度就会快了很多

 

相当于把参数传到视图里面去,这样实际查询出来只要5.6S

select a.created_by ,a.line_Id,’SO’ Qtype from ont.oe_order_lines_all a where a.created_by=74373
union
select b.created_by,b.po_line_Id,’PO’ Qtype from po.po_lines_all b where b.created_by=74373
union
select mmt.created_by,mmt.transaction_id,’Transaction’ Qtype from inv.mtl_material_transactions mmt where mmt.created_by=74373

 

隐藏内容

此处内容需要权限查看

  • 普通10积分
  • 会员免费
  • 永久会员免费推荐
会员免费查看

发表回复

您的电子邮箱地址不会被公开。