oracle数据库优化,访问oracle视图数据很慢
生活随笔
收集整理的這篇文章主要介紹了
oracle数据库优化,访问oracle视图数据很慢
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
create or replace package body PKG_ATF asprocedure GetZYWardList(s_date in varchar2, --開始時間e_date in varchar2, --結束時間group_no in varchar2, --庫房編號page_type in varchar2, --處方類型列表b_data out r_recordset --返回的數(shù)據(jù)集) isbeginopen b_data forselect distinct --a.ordered_by as "編碼"b.ward_code as "編碼",b.ward_name as "病區(qū)名稱"from drug_dispense_rec a,view_his_ward_dict bwhere a.ordered_by = b.dept_code--and c.ward_code = b.dept_codeand a.dispensing_date_time >=to_date(s_date,'yyyy-mm-dd')and a.dispensing_date_time <=to_date(e_date,'yyyy-mm-dd')and a.dispensary = '0803' --庫房編號--and a.CHARGE_INDICATOR='1' --已經(jīng)計價order by b.ward_name;end GetZYWardList;一天的數(shù)據(jù)量也就4000-5000條,但是取數(shù)據(jù)時很慢,通過sql2008通過oracle客戶端訪問oracle的視圖取數(shù)據(jù)
單從語句上看,日期寫成between?and是否好點?
用普通視圖有個缺點,來源表里建的索引失去作用了,如果來源表里的數(shù)據(jù)量大,建議不用視圖直接取表,或者把視圖改成物化視圖,充分利用出索引的優(yōu)點
視圖里不要出現(xiàn)order?by,在視圖外order?by
?
create index for ward_code column in table DEPT_VS_WARD & dept_code column in table DEPT_DICT; 2, create index for ordered_by column in table drug_dispense_rec; 3, create or replace package body PKG_ATF asprocedure GetZYWardList(s_date in varchar2, --開始時間e_date in varchar2, --結束時間group_no in varchar2, --庫房編號page_type in varchar2, --處方類型列表b_data out r_recordset --返回的數(shù)據(jù)集) isbeginopen b_data forselect distinct --a.ordered_by as "編碼"b.ward_code as "編碼",replace(c.dept_name,'護理單元','') as "病區(qū)名稱"from drug_dispense_rec a,DEPT_VS_WARD b,DEPT_DICT cwhere a.ordered_by = b.dept_codeand c.ward_code = b.dept_codeand a.dispensing_date_time >=to_date(s_date,'yyyy-mm-dd')and a.dispensing_date_time <=to_date(e_date,'yyyy-mm-dd')and a.dispensary = '0803' --庫房編號--and a.CHARGE_INDICATOR='1' --已經(jīng)計價order by b.ward_name;end GetZYWardList;?
總結
以上是生活随笔為你收集整理的oracle数据库优化,访问oracle视图数据很慢的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL语句中的AND和OR执行顺序问题
- 下一篇: 基于python3的一次简单的请求url