有没有哪个大神能帮我优化一下这个 oracle sql,多余的字段我删除了,只有待优化的语句。

Dragon_In_Sky Dragon_In_Sky 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

 

pharmacy.drug_stock  150000个

comm.drug_price_list 40000个

其余表中不超过1000个数量 


select 
       (select amount_per_package
          from comm.drug_price_list
         where drug_code = d.drug_code
           and min_spec = d.drug_spec
           and drug_spec <> d.drug_spec
           and firm_id = d.firm_id
           and min_units = d.units
           and units <> d.units
           and start_date <= sysdate
           and (stop_date >= sysdate or stop_date is null)
           and rownum <= 1) as quantityPerPackage,
       (select units
          from comm.drug_price_list
         where drug_code = d.drug_code
           and min_spec = d.drug_spec
           and drug_spec <> d.drug_spec
           and firm_id = d.firm_id
           and min_units = d.units
           and units <> d.units
           and start_date <= sysdate
           and (stop_date >= sysdate or stop_date is null)
           and rownum <= 1) as packageUnitCode, 
       (select units
          from comm.drug_price_list
         where drug_code = d.drug_code
           and min_spec = d.drug_spec
           and drug_spec <> d.drug_spec
           and firm_id = d.firm_id
           and min_units = d.units
           and units <> d.units
           and start_date <= sysdate
           and (stop_date >= sysdate or stop_date is null)
           and rownum <= 1) as packageUnit, 
       c.quantity -
       (select nvl(sum(db.quantity), 0)
          from drug_presc_master_temp da, drug_presc_detail_temp db
         where da.presc_date = db.presc_date
           and da.presc_no = db.presc_no
           and db.drug_code = c.drug_code
           and db.drug_spec = c.drug_spec
           and db.firm_id = c.firm_id
           and db.package_units = c.units
           and da.dispensary = c.storage
           and db.quantity > 0) as storeNum, 
  from comm.drug_dict             a,
       comm.drug_name_dict        b,
       comm.drug_price_list       d,
       pharmacy.drug_storage_dept e,
       pharmacy.drug_kssxx        g,
       pharmacy.drug_jbyw         h,
       pharmacy.drug_same_yp      i,
       pharmacy.drug_stock        c,
       pharmacy.kss_drug_ps       f
 where a.drug_code = b.drug_code
   and a.drug_code = c.drug_code
   and a.drug_spec = c.drug_spec
   and a.units = c.units
   and a.drug_code = d.drug_code
   and c.package_spec = d.drug_spec
   and c.package_units = c.units
   and c.firm_id = d.firm_id
   and c.storage = e.storage_code   
   and a.drug_code = f.drug_code(+)
   and a.drug_code = g.drug_code(+)
   and a.drug_code = h.drug_code(+)
   and a.drug_code = i.drug_code(+)
   and e.serial_no is not null
   and b.std_indicator in (0, 1)
   and (c.supply_indicator = 1 or c.drug_bz = 1)
   and (d.stop_date >= sysdate or d.stop_date is null)
   and d.start_date <= sysdate
;
 

...全文
评论 2
收藏 已收藏
分享
返回顶部