oracle 三種表連線方式

2021-09-02 13:59:00 字數 1496 閱讀 7691

oracle 小知識 

1.oracle 檢視表大小 

select sum(t.bytes) / 1024 / 1024 / 1024 

from dba_segments t 

where t.segment_name = 'tt_tsfr_fuzzy_abnormal'; 

2.強制走全表掃瞄和索引

/*+ full(tt_conveyance_detail_unload)*/ 強制走全表掃瞄

/*+ index(t,idx_batchcode_local)*/  強制走索引 

3.oracle 並行 

/*+ parallel(r 3) */

4.oracle 三種表連線方式

排序合併連線 use_merge

應用場景:當結果集已經排過序

select /*+ ordered use_merge(t2)*/count(*)

from test1 t1, test2 t2

where t1.object_id = t2.object_id;

巢狀迴圈 use_nl

應用場景:

1.關聯中有乙個表比較小;

2.被關聯表的關聯欄位上有索引;

select /*+leading(t1) use_nl(t2)*/count(*)

from test1 t1, test2 t2

where t1.object_id = t2.object_id;

t1位驅動表,資料量小 

雜湊連線use_hash

應用場景:

1.乙個大表,乙個小表的關聯;

2. 表上沒有索引;

3. 返回結果集比較大。

select /*+leading(t1) use_hash(t2)*/count(*)

from test1 t1, test2 t2

where t1.object_id = t2.object_id;

t1為驅動表,資料量小 

oracle 索引分類

按儲存方法分類

b-樹索引

這種索引的葉子節點儲存索引鍵值和指向索引行的rowid

b-樹索引可以用unique限定為唯一索引

create unique index student_idx on student(number) tablespace users;

位圖索引

與b-樹索引不同,位圖索引不儲存rowid值,也不儲存鍵值。它是乙個索引鍵條目儲存指向多行的指標,即每個索引條目指向多行。

位圖索引適合索引基值數少,高度重複,且唯讀的應用環境使用,所以適合於資料倉儲等環境。

create bitmap index student_bitmap_idx on student (s_***) tablespace users;

按功能分類

唯一索引

一般索引

oracle三種表連線方式

nested loop 對於被連線的資料子集較小的情況,nested loop連線是個較好的選擇。nested loop就是掃瞄乙個表,每讀到一條記錄,就根據索引去另乙個表裡面查詢,沒有索引一般就不會是 nested loops。一般在nested loop中,驅動表滿足條件結果集不大,被驅動表的連...

Oracle 表三種連線方式使用介紹 sql優化

1 nested loop 巢狀迴圈 對於被連線的資料子集較小的情況,nested loop連線就是較好的選擇。nested loop就是掃瞄乙個表,每讀到一條記錄,就根據索引去另外乙個表裡面查詢,沒有索引一般就不會是nested loops。一般在nested loop中,驅動表滿足條件結果集不大...

Oracle 三種表連線演算法總結

oracle有三種表連線技術,分別是巢狀連線 合併連線和雜湊連線。巢狀連線把要處理的資料集分為外迴圈 驅動資料來源 和內迴圈 被驅動資料來源 外迴圈只執行一次 先執行 內迴圈執行的次數等於外迴圈執行的資料集個數。這種連線的好處是記憶體使用非常少。如果驅動資料來源有限,且被驅動表在連線列上有相應的索引...