巢狀迴圈(NestedLoops )學習筆記

2021-06-03 13:06:46 字數 550 閱讀 2547

1、基本要素。

巢狀迴圈(nestedloops)中有兩個表,乙個是驅動表(又叫外部表),乙個是內部表(探查表),驅動表一般是資料量較小或被約束條件篩選後的較小的表,內部表一般是有唯一索引或有高選擇性非唯一索引(重複率較低的索引,近似於唯一索引)。

2、執行過程。

巢狀迴圈(nestedloops)會先選定乙個驅動表(人為指定或者系統根據成本指定),然後就看後面where條件中是否存在驅動表的過濾條件,如果有且該條件在驅動表的索引中(組合索引必須是第一列才能起作用),那麼就先根據索引過濾資料行,過濾完後根據rowid讀取驅動表的每一行,來跟內部表進行匹配,然後根據內部表的索引讀出匹配的行到結果集中,因為能夠快速的返回已連線的行(匹配的行),所以巢狀迴圈的響應時間最快。

注:從oracle7開始,引入了基於成本(cbo)的優化器,並且是預設的優化器,所以在巢狀迴圈時,要綜合考慮兩個表的資料量、索引等指標。比如資料量較大的表沒有索引,資料量較小的表有索引,也許系統會選擇資料量較大的表作為驅動表,所以上面所說的都只具有一般性,真正在實踐的時候還要具體情況具體分析。由此可見,在設計表的時候,索引的建立的選擇性顯得尤為重要。

巢狀for迴圈

根據外層的條件,判斷裡層能否執行,如果能執行,就把裡層 都迴圈完畢後,再繼續執行外層,繼續判斷。for 開始條件 判斷條件 更改條件 1.入門案例 public class test for system.out.println 總結2 外迴圈控制行,內迴圈控制列 for int i 1 i 2 i...

for迴圈 巢狀

package com.d for迴圈 巢狀 date 2022.2.24 正直角三角形 倒直角三角形 等腰三角形 九九乘法口訣表 public class fornest 正直角三角形 public static void zl system.out.println 外層用println換行 倒直...

PHP 條件巢狀 迴圈巢狀 條件迴圈相巢狀

1.條件巢狀 demo 假設在發3月工資的時候,不僅判定性別,還要判定男性是否有房,沒有房,可以發放住房補貼,對於女性,判定是否懷孕,懷孕還有懷孕補貼 totalmoney 0 總工資 basicmoney 8000 基本工資 男 nohouse true 沒有房?housemoney 150 住房...