繫結變數不一定好

2021-06-28 03:50:35 字數 923 閱讀 5378

因為繫結變數後不知道變數的具體值,會影響優化器的執行計畫,看這個例子:

表中有10000行列a的值從1-10000

sql> variable id number;

sql> execute  :id :=9;

sql> select * from t where a<:id;

|   0 | select statement            |      |   500 | 13000 |     3   (0)|

|   1 |  table access by index rowid| t    |   500 | 13000 |     3   (0)|

|*  2 |  

index range scan          | i    |    90 |       |     2   (0)|

sql> execute  :id :=9000;

sql> select * from t where a<:id;

|   0 | select statement            |      |   500 | 13000 |     3   (0)|

|   1 |  table access by index rowid| t    |   500 | 13000 |     3   (0)|

|*  2 |

index range scan          | i    |    90 |       |     2   (0)|

1、當處理的資料比較小,解析時佔響應時間比重比較大時,就要盡量避免硬解析,所以最好使用繫結變數

2、當處理的資料比較大,全表掃瞄時間佔響應時間比較大時,就要盡量避免全表掃瞄,就盡量別用繫結變數,因為繫結變數會影響優化器的優化,增大全表掃瞄的可能性

又大又新不一定好。

前一段時間有次在支付寶給餘額寶打錢時,遇到這麼乙個鬱悶的事情,首先銀行卡不能直接往餘額寶裡面直接打錢,先打到支付寶餘額裡面,才能衝到餘額寶裡面,當我從支付寶預設頁面進入充值到餘額的介面時,發現和之前往餘額寶打錢進了同乙個介面,好生鬱悶,後來往返數次之後發現了奧妙 這個頁面包含乙個tab介面設計 如圖...

又大又新不一定好。

前一段時間有次在支付寶給餘額寶打錢時,遇到這麼乙個鬱悶的事情,首先銀行卡不能直接往餘額寶裡面直接打錢,先打到支付寶餘額裡面,才能衝到餘額寶裡面,當我從支付寶預設頁面進入充值到餘額的介面時,發現和之前往餘額寶打錢進了同乙個介面,好生鬱悶,後來往返數次之後發現了奧妙 這個頁面包含乙個tab介面設計 如圖...

逃避不一定躲得過,面對不一定最難過

國王有七個女兒,這七位美麗的公主是國王的驕傲。她 們那一頭烏黑亮麗的長髮遠近皆知。所以國王送給她們每人一百個漂亮的髮夾。有一天 早上,大公主醒來,一如往常地用髮夾整理她的秀髮,卻發現少了乙個髮夾,於是她偷偷地到了二公主的房裡,拿走了乙個髮夾。二公主發現少了乙個髮夾,便到三公主房裡拿走乙個髮夾 三公主...