优化sql语句

SELECT h.customer_po_number --客户PO

      ,h.order_number --订单编号

      ,h.order_type_name --订单类型

      ,h.suit_count --套数

      ,h.order_status_name --状态

      ,to_char(h.booked_date,'yyyy-mm-dd') booked_date--订单受理日期

      ,to_char(h.delivery_date,'yyyy-mm-dd') delivery_date --订单发货日期

      ,to_char(h.creation_date,'yyyy-mm-dd') creation_date  --订单创建日期 

      ,to_char(h.complete_date,'yyyy-mm-dd') complete_date  --订单完工日期 

      ,h.zq --战区

      ,h.sq --省区

      ,h.pq --片区

      ,h.city --城市

    /*  ,h.segment1

      ,h.segment2

      ,h.segment3*/

      ,h.account_number --客户编码

      ,h.account_short_name --客户简称

         ,h.promotion_name --活动

      ,h.style_series --风格系列

  ,ooh.order_progress as 进展

    --,hfv.confirmed_name as 核价员

    ,oe.design_method as 设计方式

    ,oe.end_cust_name -- 终端客户地址 

    ,oe.end_cust_phone -- 终端客户电话  

     ,oe.end_cust_address -- 终端客户地址 

    ,SUM(decode(l.item_class,'MM',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS mm --木门

    ,SUM(decode(l.item_class,'LKM',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS LKM--铝框门款  

      ,SUM(decode(l.item_class,'QB',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS QB --墙板款 

    ,SUM(decode(l.item_class,'MMYB',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS MMYB --岩板款  

    ,SUM(decode(l.item_class,'PTCP',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS PTCP-- 配套款

    ,SUM(decode(l.item_class,'WJPJ',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS WJPJ-- 五金配件款

      ,SUM(decode(l.item_class,'CPJJ',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS CPJJ-- 成品家居款6

      

     , SUM(decode(l.item_class,'YYWPM',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS YYWPM-- 运动款

    ,SUM(decode(l.item_class,'MMSP',nvl(l.yg_order_amount ,0) - nvl(l.charge_amount ,0),0)) AS MMSP -- 饰品款

  ,SUM(CASE WHEN l.item_class NOT IN

                  ('MM','LKM','QB', 'MMYB','PTCP','WJPJ','CPJJ', 'YYWPM','MMSP' ) THEN

               nvl(l.yg_order_amount, 0) - nvl(l.charge_amount, 0)

           

             ELSE

              0  END ) AS qy

      

       FROM apps.cux_om_order_headers_v h

      ,apps.cux_om_order_lines_v   l

  ,mdm_cust_finerpt_user_access fu 

  ,oms_oe_order_types       ooot

       ,oms_oe_order_headers ooh --添加进展

         --,APPS.OMS_OE_ORDER_HEADER_FINE_V hfv--添加核价员

          ,oms_oe_order_header_atts oe --添加终端

      WHERE

       h.header_id = l.header_id and l.header_id=ooh.header_id 

       

       and ooh.header_id=oe.header_id

       --and oe.header_id =hfv.header_id 

       AND h.order_type_id = ooot.order_type_id and ooot.order_type_id=ooh.order_type_id (+)

      

       --AND ooot.LEFT_FLAG = 'N' --是否遗留单:Y:是,N:否

       AND ooot.CHANGE_FLAG = 'N'--是否更改单:Y:是,N:否

       AND   h.unit_code =161

       AND FU.ORG_ID=H.unit_code

${if(len(BookDates)=0,"","and h.booked_date>=to_date('"+BookDates+"','yyyy-mm-dd')")}

${if(len(BookDatee)=0,"","and h.booked_date<to_date('"+BookDatee+"','yyyy-mm-dd')+1")}

${if(len(BookDates_c)=0,"","and h.creation_date>=to_date('"+BookDates_c+"','yyyy-mm-dd')")}

${if(len(BookDatee_c)=0,"","and h.creation_date<to_date('"+BookDatee_c+"','yyyy-mm-dd')+1")}

 ${if(len(sq)==0,"", "and h.sq in ('" + replace(sq,",","','") + "')")}

 ${if(len(po) == 0,"","and  h.customer_po_number  like '%"+po+"%'")}

 --添加订单类型过滤

  ${if(len(订单类型)==0,"","and h.order_type_name like '%"+订单类型+"%'")}

  --添加客户简称过滤

  ${if(len(客户简称)==0,"","and h.account_short_name like '%"+客户简称+"%'")}

--添加订单编号过滤

  ${if(len(订单编号)==0,"","and h.order_number  like '%"+订单编号+"%'")}

 AND h.order_type_name not  like '%遗留%' 

 AND h.order_type_name not  like '%厂部%'

 AND h.order_type_name not  like '%运营物品%'

 AND h.header_id = l.header_id

--AND (fu.is_qd='N' OR fu.is_qd='A' OR h.site_code='1' )

GROUP BY

   h.customer_po_number --客户PO

      ,h.order_number --订单编号

      ,h.order_type_name --订单类型

      ,h.suit_count --套数

      ,h.order_status_name --状态

      ,to_char(h.creation_date,'yyyy-mm-dd') --订单创建日期 

      ,to_char(h.booked_date,'yyyy-mm-dd') --订单受理日期

      ,to_char(h.complete_date,'yyyy-mm-dd')  --订单完工日期 

      ,to_char(h.delivery_date,'yyyy-mm-dd')  --订单发货日期

      ,h.zq --战区

      ,h.sq --省区

      ,h.pq --片区

      ,h.city --城市

      ,h.account_number --客户编码

      ,h.account_short_name --客户简称

         ,h.promotion_name --活动

      ,h.style_series --风格系列   

      ,ooh.order_progress   --进展    

       --,hfv.confirmed_name -- 核价员  

       ,oe.design_method --设计方式  

          ,oe.end_cust_name -- 终端客户地址 

        ,oe.end_cust_phone -- 终端客户电话  

        ,oe.end_cust_address -- 终端客户地址                    

我这个代加载的好慢,是SQL、语句的问题还是服务器卡?

image.png

FineReport 艾琳c 发布于 2022-5-27 10:08
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-5-27 10:11(编辑于 2022-5-27 10:14)

慢:mdm_cust_finerpt_user_access fu   这个表你添加了后,没有关联条件。这样就直接产生了笛卡尔的积了。如果这个表的数据量多。那么不管你是什么服务器。和数据库。它都不可能快

还有我看你apps.cux_om_order_headers_v与cux_om_order_lines_v像是视图。没有索引吧。这样也会慢。。。

删除这张表mdm_cust_finerpt_user_access,,我看你根本就没有使用这张表。也没有显示这张表的什么字段,直接删除掉它。。再看

  • 艾琳c 艾琳c(提问者) fu关联了:FU.ORG_ID=H.unit_code
    2022-05-27 10:13 
  • 艾琳c 艾琳c(提问者) 是视图
    2022-05-27 10:13 
  • CD20160914 CD20160914 回复 艾琳c(提问者) 你关联个鬼哟。。你自己把它注释了呀。。。你自己看
    2022-05-27 10:15 
  • 艾琳c 艾琳c(提问者) 回复 CD20160914 AND FU.ORG_ID=H.unit_code这个没有注释哟
    2022-05-27 10:19 
  • CD20160914 CD20160914 回复 艾琳c(提问者) 你发的语句,你自己看你写了注释的。。如果你在你的电脑上没有注释。那么你自己检查一下两个视图的数据量大概分别是多少行吧。视图也可以创建索引。。。你先创建索引吧。。你关联的字段创建索引
    2022-05-27 10:22 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-5-27 10:09

好长...........

最佳回答
0
重庆一棵草Lv4中级互助
发布于2022-5-27 10:10

数据量大不大哟。

最佳回答
0
qiqits1984Lv6中级互助
发布于2022-5-27 10:14

什么类型的数据库?sql server ?可以增加数据库的内存。

语句可不可以把sum 单独计算后,再与数据关联,能不能快点也是不清楚。

最佳回答
0
坚果联盟Lv5见习互助
发布于2022-5-27 11:38

where后面like太多了,select后面还有很多sum和计算公式,这些都会增加查询速度

  • 6关注人数
  • 460浏览人数
  • 最后回答于:2022-5-27 11:38
    请选择关闭问题的原因
    确定 取消
    返回顶部