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