用等比數列解析偽列level的另乙個作用

2021-08-27 06:13:04 字數 1707 閱讀 9150

我們都知道,level是個偽列,代表當前節點所在的層級;對根節點來說,level返回1;根節點到子節點返回2,以此類推。

借助level,我們可以控制對錶的掃瞄次數。

第一次掃瞄得出的結果集的level都是1,第二次掃瞄的結果集的level都是2,依此類推。

實驗環境:

sql> create table test as select ename from emp where rownum<=2;

table created.

sql> select * from test;

ename

----------

smith

allen

當level=1時:

sql> select level,ename from test connect by level=1;

level ename

---------- ----------

1 smith

1 allen

當level<=2時:

sql> select level,ename from test connect by level<=2;

level ename

---------- ----------

1 smith

2 smith

2 allen

1 allen

2 smith

2 allen

6 rows selected.

當level<=3時:

sql> select level,ename from test connect by level<=3;

level ename

---------- ----------

1 smith

2 smith

3 smith

3 allen

2 allen

3 smith

3 allen

1 allen

2 smith

3 smith

3 allen

level ename

---------- ----------

2 allen

3 smith

3 allen

14 rows selected.

當level=1時,進行1次掃瞄;當level<=2時,第二次進行2次掃瞄;當level<=3時,第三次進行4次掃瞄,......,當level<=n時,第n次進行2^(n-1)次方掃瞄。那麼所有的掃瞄次數總和為:

2^0 + 2^1+ 2^2+...+2^(n-1)

利用等比數列求和公式,可得:

s(n)=2^n - 1

同時,我們還可以對返回行的總數進行計算。

當level=1,掃瞄1次,返回2行;當level<=2,掃瞄3次,返回6行;當level<=3時,掃瞄7次,返回14行;....;當level<=n時,掃瞄2^n - 1次,返回:

2^1 + 2^2+ 2^3+2^4+...+2^n

利用等比數列求和公式,可得:

t(n)=2^(n+1)-2

得到到返回行的總數,我們可以用(返回行到總數)/(邏輯讀)用來大概判斷sql語句是否需要優化。

用等比數列解析偽列level的另乙個作用

我們都知道,level是個偽列,代表當前節點所在的層級 對根節點來說,level返回1 根節點到子節點返回2,以此類推。借助level,我們可以控制對錶的掃瞄次數。第一次掃瞄得出的結果集的level都是1,第二次掃瞄的結果集的level都是2,依此類推。實驗環境 sql create table t...

練習,等比數列求和

description 已知q與 n,求等比數列之和 1 q q2 q3 q4 qn input 輸入一對資料,含有乙個整數n 1 n 20 乙個小數 q 0 q 2 output 對於每組資料n和q 計算其等比數列的和,精確到小數點後 5位。sample input 5 1.2 sample ou...

Alternating Sum 等比數列 逆元

給你 n,a,b,k string s n,a,b 1e9 k 1e5 問題是利用上面的引數求乙個式子。其中s i 是有符號位。題目說明了,超過了字串s長度就會取餘進行迴圈。就是 s i k 這個題明顯就是利用迴圈節求解。因為n的值太大,跑不完。所以我們需要找到迴圈節直接的關係。後來通過觀察就知道其...