oracle資料庫sql查詢檢視第二次查詢很慢

lmxx2020發表於2024-02-05

同樣一個sql查詢檢視,第一次查詢很快,1s內就查詢出來,第二次再查需要1分多鐘才能出來。

sql語句如下:

select *
  from vEISWorksService where StudiesDoneDate >= '20230628'
   and StudiesStatus = 100
   and RESULTSINDEX is not null
   and (ResultsReportsPost is null or ResultsApprovePost is null)   and rownum <= 50;


 檢視後臺等待事件,主要在於"db file sequential read",但是並沒有堵塞發生

EVENT                              MACHINE              BLOCKING_SESSION
------------------------           ------------
db file sequential read             ris01
db file sequential read             WORKGROUP\ZYJPDYSVR

這個問題首先想到了,基數反饋(Cardinality Feedback )問題導致的查詢慢,由於並不確認是否真是這個問題造成,首先在會話級別除錯,設定session級別"_optimizer_use_feedback"=FALSE

sql > alter session set "_optimizer_use_feedback"=FALSE;

再次查詢發現再次查詢確實不再慢了,正式關閉基數反饋。

SQL> alter system set "_optimizer_use_feedback"=false;

基數反饋是 Oracle 11.2 引入的關幹 SQL效能最佳化的新特性,但是該引數存在不穩定因素,可能會帶來執行效率的問題,所以建議關閉最佳化器反饋。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/22967847/viewspace-3006322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章