基於Oracle的SQL優化 學習(十一)

2021-08-21 03:36:39 字數 596 閱讀 3546

當繫結變數窺探被啟用後,每當 oracle 以硬解析的方式解析使用了繫結變數的目標 sql 時,

(此時對應的是軟解析/軟軟解析),即便此時對應繫結變數的具體輸入值和之前硬解析時對應的值不同, orade 也會沿用之前硬解析時所產生的解析樹和執行計畫,而不再重複執行上述「窺探」的動作。

繫結變數分級( bind graduation )是指 oracle 在 pl / sql **中會根據文字型繫結變數的定義長度而將這些文字型繫結變數分為四個等級。

(4)定義長度在 2000 位元組以上被分在第四個等級。

在執行目標 sql 時,對目標 sql 中的每乙個繫結變數 oracle 都要用其實際的值來替換,所以該 sql 的 session cursor 必須為這些繫結變數在 pga 中預留一定長度的記憶體,這個預留的記憶體空間必須能夠容納這些繫結變數實際的值。當然,這裡最理想的方式就是預留的記憶體空間恰好等於這些繫結變數的定義長度,但這樣一來 orade 處理起來就會比較麻煩(因為繫結變數的定義長度千差萬別)。為了簡化處理流程, oracle 就分了上述四個等級,這樣一來,不管目標 sql 中文字型的繫結變數的定義長度為多少, oracle 只需要對不同等級的文字型繫結變數分別分配固定大小的記憶體空間就可以了。

基於Oracle的SQL優化 學習(六)

如何得到真實的執行計畫 得到目標sql的執行計畫,大致有以下四種方式 1 explain plan 命令 2 dbms xplan包 3 sqlplus中的autotrace開關 4 10046事件 除了第四種,其他三種方法都有可能是不准的。判斷乙個sq計畫任務任務是否準確,就要看目標sql是否真正...

基於Oracle的SQL優化 學習(十七)

in list iterator是針對in後面是常量集合的一種處理方法。此時優化器會遍歷目標sql中in後面的常量集合中的每乙個值,然後去做比較,看目標結果集中是否存在和這個值匹配的記錄。如果存在匹配記錄,則這個記錄就會成為該sql的最終返回結果集中的一員 如果不存在匹配記錄,則優化器會繼續遍歷in...

sql優化學習記錄

面試被問到了sql優化,回來學習一下,看別人的文章,自己在手動記錄一遍,算是加深印象吧。所謂sql優化,本質上有三種選擇 1 降低目標sql語句的資源消耗 2 並行執行目標sql語句 3 平衡系統的資源消耗 以上的說明比較難理解,還是記錄一些簡單易懂的方法 1 對查詢進行優化,避免全表查詢。2 避免...