本源:網海拾貝
4. 選擇最無恪守的表名挨次(只在基於端正的優化器中有用)
oracle的闡冥具憑據從右到左的挨次處理from子句中的表名,因而from子句中寫在末端的表(底子底細表 driving table)將被最先處理. 在from子句中包括多個表的環境下,你必須選擇紀錄條數最少的表作為底子底細表.當oracle處理多個表時, 會運用排序及歸併的體式樣式銜接它們.首先,掃瞄第乙個表(from子句中末端的阿誰表)並對紀錄舉行派序,然後掃瞄第二個表(from子句中末端第二個表),末端將悉數從第二個表中檢索出的紀錄與第乙個表中相宜紀錄舉行歸併.
比喻:表 tab1 16,384 筆紀錄
表 tab2 1 筆紀錄
選擇tab2作為底子底細表 (最好的體式樣式)
select count(*) from tab1,tab2 實行時分0.96秒
選擇tab2作為底子底細表 (欠安的體式樣式)
select count(*) from tab2,tab1 實行時分26.09秒
假若有3個以上的表銜接查詢, 那就需求選擇交叉表(intersection table)作為底子底細表, 交叉表是指阿誰被其他表所引用的表.
比喻:emp表形貌了location表和category表的交集.
select *
from location l ,
category c,
emp e
where e.emp_no between 1000 and 2000
and e.cat_no = c.cat_no
and e.locn = l.locn
將比下列sql更無恪守
select *
from emp e ,
location l ,
category c
where e.cat_no = c.cat_no
and e.locn = l.locn
ORACLE SQL效能優化系列
1.選用適合的 oracle 優化器 oracle 的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器 可以通過對 init.ora 檔案中optimizer mode 引數的各種宣告,如 rule,cost,choose,all rows,...
ORACLE SQL效能優化系列
1.選用適合的oracle優化器 oracle的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器,可以通過對init.ora檔案中optimizer mode引數的各種宣告,如rule,cost,choose,all rows,first r...
Oracle SQL效能優化系列
1.選用適合的oracle優化器 oracle的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器,可以通過對init.ora檔案中optimizer mode引數的各種宣告,如rule,cost,choose,all rows,first r...