繫結變數及其優點

2021-08-30 14:40:47 字數 718 閱讀 1483

什麼是繫結變數(bind variable)

bind var是指在sql語句的條件中使用變數而不是常量。比如shared pool裡有兩條sql語句,

select * from tab1 where col1=1;

select * from tab1 where col1=2;

對oracle資料庫來說,這是兩條完全不同的sql,對這兩條語句都需要進行hard parse。因為oracle會根據sql語句的文字去計算每個字元在記憶體裡的hash值,因此雖然上述兩條sql只有乙個字元不一樣,oracle根據hash演算法在記憶體中得到的hash位址就不一樣,所以oracle就會認為這是兩條完全不同的語句。而如果將上述sql改寫成select * from tab1 where col1=:var1;,然後通過對變數var1的賦值去查詢,那麼oracle對這條語句第一次會進行hard parse,以後就只進行soft parse。假設某條語句被重複執行了幾十萬次,那麼使用bind var帶來的好處是巨大的。乙個應用程式如果bind var使用不充分,那麼幾乎一定會伴隨著嚴重的效能問題。

繫結變數是相對文字變數來講的,所謂文字變數是指在sql直接書寫查詢條件,這樣的sql在不同條件下需要反覆解析,繫結變數是指使用變數來代替直接書寫條件,查詢bind value在執行時傳遞,然後繫結執行。優點是減少硬解析,降低cpu的爭用,節省shared_pool ;缺點是不能使用histogram,sql優化比較困難

繫結變數及其優缺點

變數繫結 bind variable 是指在sql語句的條件中使用變數而不是 常量。比如shared pool裡有兩條 sql語句,select from tab1 where col1 1 select from tab1 where col1 2 對oracle資料庫來說,這是兩條完全不同的sq...

泛型及其優點

泛型類和泛型方法同時具備可重用性 型別安全和效率,這是非泛型類和非泛型方法無法具備的。泛型通常用在集合和在集合上執行的方法中。net framework 2.0 版類庫提供乙個新的命名空間 system.collections.generic,其中包含幾個新的基於泛型的集合類。建議面向 2.0 版的...

ZeroMQ 原理及其優點

簡介 zeromq號稱是 史上最快的訊息佇列 基於c語言開發的,實時流處理sorm的task之間的通訊就是用的zeromq。引用官方說法,zmq 以下zeromq簡稱zmq 是乙個簡單好用的傳輸層,像框架一樣的乙個socket library,他使得socket程式設計更加簡單 簡潔和效能更高。是乙...