当前位置: 首页 > news >正文

pHP可以做论坛网站吗网站用哪种语言

pHP可以做论坛网站吗,网站用哪种语言,苏州保洁公司哪家最好,深圳燃气公司电话95511[13/JUL/2025, Yusuf Leo, Oracle SQL Performance Tuning Series]我们经常会遇到从同一表中按不同维度取出不同区间的数据#xff0c;再以相同的属性将这些数据分别汇总到一起的需求。这类需求往往迫使我们对同一个表反复去扫描#xff0c;当原始数据量太大的时候#xff0…[13/JUL/2025, Yusuf Leo, Oracle SQL Performance Tuning Series]我们经常会遇到从同一表中按不同维度取出不同区间的数据再以相同的属性将这些数据分别汇总到一起的需求。这类需求往往迫使我们对同一个表反复去扫描当原始数据量太大的时候这就可能给我们带来程序性能上的困扰。行转列PIVOT语法或许会是较好的优化思路之一。PIVOT需要Oracle 11g及以上版本支持。下面我们来看看这个实例这是某企业EBS客制化开发的一个报表核心逻辑是从ASCP工作台按订单类型区分统计各物料的总需求、在库、在途、在购等数量。优化前1.1 主程序主游标 cursor c1 isselect aa.organization_id,aa.plan_id,aa.item_segments,aa.description,aa.uom_code,aa.minimum_order_quantity, --MOQaa.fixed_lot_multiplier, --SPQaa.full_lead_time, --Lead Timeget_order_qty(aa.plan_id, aa.item_segments, 现有量) pr_qty1,get_order_qty(aa.plan_id, aa.item_segments, 采购订单) pr_qty7,get_order_qty(aa.plan_id, aa.item_segments, 采购申请) pr_qty8from (select distinct mov.organization_id,mov.plan_id,mov.item_segments,mov.description,mov.uom_code,msi.inventory_item_id,msi.minimum_order_quantity, --MOQmsi.fixed_lot_multiplier, --SPQmsi.full_lead_timefrom MSC_ORDERS_V mov, MTL_SYSTEM_ITEMS_B MSIwhere 1 1and msi.organization_id mov.organization_idand msi.segment1 mov.item_segmentsand (trunc(mov.new_order_date) to_date(p_date_f, YYYY-MM-DD) orp_date_f is null)and (trunc(mov.new_order_date) to_date(p_date_e, YYYY-MM-DD) orp_date_e is null)and mov.item_segments like % || p_item_segments || %and mov.plan_id p_plan_idand mov.organization_id p_organizatino_id) aa;1.2 主程序次级游标 cursor c2(p_item_code VARCHAR2) isselect bb.new_order_date,bb.new_due_date,get_plan_qty(bb.plan_id,bb.item_segments,计划单,bb.new_order_date,bb.new_due_date) po_qty, --采购数量get_need_qty(bb.plan_id, bb.item_segments, bb.new_due_date) need_qty --总需求数量from (select distinct mov.organization_id,mov.plan_id,mov.item_segments,to_char(mov.new_order_date, YYYY-MM-DD) new_order_date, --建议采购日期to_char(mov.new_due_date, YYYY-MM-DD) new_due_date --建议到期日from MSC_ORDERS_V mov, MSC_ORDERS_V mov1where 1 1and mov1.item_segments mov.item_segmentsand mov1.new_due_date mov.new_due_dateand mov1.new_order_date mov.new_order_dateand mov1.order_type_text 计划单 --物料有计划单的输出没有计划单的排除and (trunc(mov.new_order_date) to_date(p_date_f, YYYY-MM-DD) or p_date_f is null)and (trunc(mov.new_order_date) to_date(p_date_e, YYYY-MM-DD) or p_date_e is null)and mov.plan_id p_plan_idand mov.item_segments p_item_codeand mov.organization_id p_organization_idorder by new_due_date) bb;1.3 游标调用的子函数 -- get_order_qty 核心逻辑 select round(nvl(sum(mov.quantity_rate), 0), 2)from MSC_ORDERS_V movwhere 1 1and mov.category_set_id 1001and mov.item_segments p_item_codeand mov.order_type_text p_order_typeand mov.plan_id p_plan_id;-- get_plan_qty 核心逻辑 select round(nvl(sum(mov.quantity_rate), 0), 2)from MSC_ORDERS_V movwhere 1 1and trunc(mov.new_order_date) to_date(p_order_date, YYYY-MM-DD)and trunc(mov.new_due_date) to_date(p_due_date, YYYY-MM-DD)and mov.category_set_id 1001and mov.item_segments p_item_codeand mov.order_type_text p_order_typeand mov.plan_id p_plan_id;-- get_need_qty 核心逻辑 select abs(round(nvl(sum(mov.quantity_rate), 0), 2))from MSC_ORDERS_V movwhere 1 1and mov.new_due_date (to_date(p_due_date, YYYY-MM-DD) 6)and mov.category_set_id 1001and mov.item_segments p_item_codeand mov.order_type_text in (非标准任务需求,工作单需求,计划单需求,销售订单 MDS,预测 MDS)and mov.plan_id p_plan_id;问题分析该程序的主要逻辑是主程序首先遍历主游标从Msc_Oraders_V中取出符合参数条件的物料再代入次级游标中进一步取出符合要求的明细数据以打印输出并且这其中的很多数量数据是通过调用子函数计算。我们在两个游标中都看到了很不友好的DISTINCT去重进一步分析作者使用粗暴去重的原意发现两层游标的设计也并非必要次级游标中的“物料有计划单的输出没有计划单的排除”这个筛选条件其实可以通过EXISTS手段并入主游标而在主游标中先去重再调用子函数求值的方式则应考虑通过分组聚合的方式尝试简化写法。除了程序结构设计的问题该程序的性能问题还存在于对视图Msc_Oraders_V的反复扫描这是一个带有UNION ALL拼接的大型视图而程序中所有的数据其实都是来自这个视图困扰作者的可能是并不能通过简单的分组聚合直接满足功能设计的需求因为各汇总数据不仅是order_type_text不同而是同时在其它字段上又有不同范围的限制即三个子函数的区别。优化思路大方向是1、两级游标整合成一级2、拆解子函数入主游标原次级游标能够决定代入来的主游标物料是否打印则应把这个限制条件直接作为物料的筛选条件虽然子函数都是在读取Msc_Orders_V但又略有不同不能通过GROUP BY直接改写考虑尝试PIVOT原始扫描范围放为最大各列统计时再分别限制其范围。优化后 with plan_qtys as(select mov1.organization_id,mov1.plan_id,mov1.item_segments,trunc(mov1.new_order_date) new_order_date, --建议采购日期trunc(mov1.new_due_date) new_due_date, --建议到期日sum(casewhen mov1.category_set_id 1001 thenmov1.quantity_rateelse0end) plan_qtyfrom MSC_ORDERS_V mov1where 1 1and mov1.new_due_date is not nulland mov1.new_order_date is not nulland mov1.order_type_text 计划单 --物料有计划单的输出没有计划单的排除and mov1.new_order_date nvl(to_date(p_date_f, YYYY-MM-DD), mov1.new_order_date)and mov1.new_order_date nvl(to_date(p_date_e, YYYY-MM-DD) .99999, mov1.new_order_date)and mov1.plan_id p_plan_idand mov1.item_segments like % || p_item_segments || %and mov1.organization_id p_organization_idgroup by mov1.organization_id,mov1.plan_id,mov1.item_segments,trunc(mov1.new_order_date),trunc(mov1.new_due_date)), mov_data as(select organization_id,item_segments,description,uom_code,new_order_date,new_due_date,round(nvl(pr_qty1, 0), 2) pr_qty1,round(nvl(pr_qty7, 0), 2) pr_qty7,round(nvl(pr_qty8, 0), 2) pr_qty8,round(nvl(plan_qty, 0), 2) plan_qty,abs(round(nvl((need_qty_q2), 0), 2)) need_qtyfrom (select mov.organization_id,mov.item_segments,mov.description,mov.uom_code,casewhen order_type_text in (非标准任务需求,工作单需求,计划单需求,销售订单 MDS,预测 MDS) then需求elseorder_type_textend as order_type_text,mov.quantity_rate order_qty,casewhen mov.new_due_date pq.new_due_date 6 thenmov.quantity_rateelse0end order_qty2,pq.plan_qty,pq.new_order_date,pq.new_due_datefrom MSC_ORDERS_V mov, plan_qtys pqwhere mov.organization_id pq.organization_idand mov.plan_id pq.plan_idand mov.item_segments pq.item_segmentsand mov.category_set_id 1001)pivot(sum(order_qty), sum(order_qty2) as q2for order_type_text in(现有量 as pr_qty1,采购订单 as pr_qty7,采购申请 as pr_qty8,需求 as need_qty))) select mov.organization_id,mov.item_segments,mov.description,mov.uom_code, --单位msi.inventory_item_id,msi.minimum_order_quantity, --MOQmsi.fixed_lot_multiplier, --SPQmsi.full_lead_time,mov.pr_qty1,mov.pr_qty7,mov.pr_qty8,mov.need_qty,mov.plan_qty,mov.new_order_date,mov.new_due_datefrom mov_data mov, MTL_SYSTEM_ITEMS_B MSIwhere 1 1and msi.organization_id mov.organization_idand msi.segment1 mov.item_segmentsorder by item_segments, new_due_date优化前请求第二次运行有缓存用时14h51m42s优化后请求同参数第二次运行有缓存用时54s优化比例1:991[END]
http://www.zqtcl.cn/news/440305/

相关文章:

  • 便宜建站空间战队头像在线制作免费
  • 做招聘网站赚钱吗厦门网站建设哪里好
  • 新乡网站建设哪家公司好阿里巴巴做国际网站多少钱
  • 怎么在悉尼做网站dede做手机网站
  • 企业网站模板免费下载品牌建设专家库推荐表
  • 辽宁智能网站建设推荐网络营销推广方案创意
  • 安阳做一个网站多少钱东营做网站公司
  • 深圳市罗湖网站建设百度自助建站官网
  • 网站开发安装环境网站建设销售话术
  • 网站权重网站栏目划分的原则
  • 国际网站建设的目的我的百度账号登录
  • 温州网站设计定制博客和网站的区别
  • 益阳建设网站wordpress加载图片慢
  • 网站官网阜新网站开发公司
  • 适合做网站的图片印刷公司网站模板
  • 南昌哪家网站建设最好网站建设的方法有
  • 东莞做网站 动点官网百度开户流程
  • 中力建设网站怎么做自己的门户网站
  • 做的网站必须放做音乐网站的目地
  • 网站备案下来以后怎么做网页万网创始人张向东
  • 怎么做网站官方电话品牌营销策划十大要点
  • 上海自适应网站深圳网络推广外包
  • 网站的建设模式是指什么时候开始外网视频网站做泥声控
  • 免费在线观看电影电视剧网站网站建设公司哪家好 在线磐石网络
  • 域名是建网站之前申请吗怎么查看网站开发语言
  • 网站建设业务的延伸性查企业信息查询平台官网免费
  • 网站如何制作的渭南网站建设推广
  • 网站的ico怎么做简单房地产网站
  • 做室内设计通常上的网站关键词挖掘查询工具爱站网
  • 大理住房和城乡建设部网站为食堂写个网站建设