公司開發同事發來一條語句,反應執行很慢,原語句如下:
select
count(df.origrec)* it.scale as pcount,
it.invcode as invcode,
df.samplefrom as rasclientid
from da_finance_pricesett df,
dbs_db_invbtest it
where df.testcode = it.testcode
and to_char(df.senddate,'yyyy-mm-dd') > '2013-02-25'
and to_char(df.senddate,'yyyy-mm-dd') <= '2013-02-25'
and it.invcode in
(select
distinct invcode from dbs_db_invbtest
)group
by it.scale,
it.invcode,
df.samplefrom;
存在的問題:
1、條件子句條件含函式引起的隱性轉換導致全表掃瞄;
2、條件子句的巢狀條件存在無條件過濾導致全表掃瞄,而且從連線條件邏輯看,該子句與第一次等值連線是重複的。修改如下:
select
count(df.origrec)* it.scale as pcount,
it.invcode as invcode,
df.samplefrom as rasclientid
from da_finance_pricesett df,
dbs_db_invbtest it
where df.testcode = it.testcode
and df.senddate >to_date('2013-01-25','yyyy-mm-dd')
and df.senddate <=to_date('2013-02-25','yyyy-mm-dd')
group
by it.scale,
it.invcode,
df.samplefrom;
SQL語句效能調整原則
一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化。...
SQL語句效能調整原則
一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化。...
SQL語句效能調整原則
一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化。...