ORACLE SQL效能優化系列(三)

2021-04-01 20:00:59 字數 2198 閱讀 2591

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 *

fromemp e ,

location l ,

category c

wheree.cat_no = c.cat_no

and e.locn = l.locn

and e.emp_no between 1000 and 2000

oracle sql效能優化系列(一)

oracle sql效能優化系列(二)

oracle sql效能優化系列(四)

oracle sql效能優化系列(五)

oracle sql效能優化系列(六)

oracle sql效能優化系列(七)

oracle sql效能優化系列(八)

oracle sql效能優化系列(九)

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...