Oracle SQL程式優化案例二

2022-03-09 15:14:43 字數 1387 閱讀 3440

有時候寫得不規範的sql語句真的是占用很多時間

以下是我在工作中發現的規律,如果欄位過多的使用函式,盡量不要將這些字段串聯在一起做匹配或查詢條件,比如紅色注釋部分,在執行紅色部分的時候

這個sql程式是執行了7分多鐘,但是將函式分開做匹配的戶查詢時間不用1秒:

select ebeln||'_'||ltrim(substr(posnr,1,6),'0')||'_'||ltrim(substr(posnr,7,4),'0') so_line_id,

ebeln,

sz.matnr,

sz.posnr,

werks

from sapsr3.ztsd_008_1@sap_sep sz

where

trim(sz.zto_ec) is null

andsz.zstate='r'

andtrim(werks) in('2501')

and not exists (select null from seineebs.fp_sale_req_lines_rpy@ec fs where fs.so_line_id = ebeln||'_'||ltrim(substr(posnr,1,6),'0')||'_'||ltrim(substr(posnr,7,4),'0'))

and exists (select null from stg.sap_ztsd_002 st

where trim(st.ebeln_image) is not null

and exists (select null from stg.sap_ekko_rs ekko,stg.sap_ekpo_rs ekpo

where ekko.ebeln = ekpo.ebeln

--and ltrim(st.ebeln,'0')||'_'||ltrim(st.ebelp,'0') = ltrim(ekpo.ebeln,'0')||'_'||ltrim(ekpo.ebelp,'0')

and ltrim(st.ebeln,'0')=ltrim(ekpo.ebeln,'0') and ltrim(st.ebelp,'0')=ltrim(ekpo.ebelp,'0')--更改部分

and nvl(ekko.reswk,ekpo.werks) not in ('2021','2022','2023'))

--and ltrim(st.ebeln_image,'0')||'_'||ltrim(st.ebelp_image,'0') = ltrim(sz.ebeln,'0')||'_'||ltrim(sz.ebelp_sto,'0')

and ltrim(st.ebeln_image,'0')= ltrim(sz.ebeln,'0') and ltrim(st.ebelp_image,'0')=ltrim(sz.ebelp_sto,'0')--更改部分

)

Oracle SQL程式優化案例一

下面是儲存過程的一部分程式 procedure sap man routing so citem id varchar2,csite id varchar2,ctype varchar2 isv routing varchar2 40 begin if citem id not like c the...

Oracle Sql優化筆記

基本的sql編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自動對sql語句進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用cbo cost based optimization,基於代價的優化方式 時。我們可以總結一下可能引起全表掃瞄的操作 oracle優化器...

Oracle Sql優化筆記

基本的sql 編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自 動對sql語句 進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用 cbo cost based optimization 基於代價的 優化方式 時。我們可以 總結一下可能引起全表 掃瞄的操作 or...