oracle sql優化規範之一

2021-06-11 18:16:39 字數 1341 閱讀 6951

溫故而知新

規則1 在查詢語句中不允許使用select *

使用select時,不允許使用select *,要寫出具體的列名。目的是防止資料字段增加後的影響。

規則2 使用多表連線時要使用表的別名明確的標明是哪個表中的列

使用表的別名明確的告訴oracle是哪個表上的列,這樣減少了oracle的工作,提高了效率。

例如:

避免使用selectempno,dname

from emp,dept

where emp.deptno=dept.deptno

建議使用select e.empno,d.dname

from emp e,dept d

where e.deptno=d.deptno

規則3 注意where字句寫法,應該根據索引順序、範圍大小來確定條件子句的前後順序,盡可能的讓字段順序與索引順序相一致,範圍從大到小。

(低效)

select …

from emp e

where  sal > 2000

and    job = 『manager』

and    25 < (select count(*) from emp

where mgr=e.empno);

(高效)

select …

from emp e

where 25 < (select count(*)from emp

where mgr=e.empno)

and    sal > 2000

and    job = 『manager』;

規則4盡量將記錄少的表放在from字句最後面,做為基礎表

盡量將記錄少的表放在from字句的最後面,作為基礎表。(oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表(基礎表)將被最先處理)

例如:表 tab1 16,384 條記錄

表 tab2 1      條記錄

選擇tab2作為基礎表(最好的方法)

select count(*) from tab1,tab2   執行時間0.96秒

選擇tab1作為基礎表(不佳的方法)

select count(*) from tab2,tab1   執行時間26.09秒

規則5 兩個結果集若沒有重覆記錄用union all替換union

使用union的兩個結果集中沒有重複的記錄,盡量使用union all替換union。因為union將對結果集中記錄進行排序操作。

Oracle Sql優化筆記 一

基本的sql編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自動對sql語句進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用cbo cost based optimization,基於代價的優化方式 時。我們可以總結一下可能引起全表掃瞄的操作 oracle優化器...

ORACLE SQL效能優化一

1.選用適合的oracle優化器 2.訪問table的方式 3.共享sql語句 4.選擇最有效率的表名順序 只在基於規則的優化器中有效 5.where子句中的連線順序 6.select子句中避免使用 7.減少訪問資料庫的次數 1.選用適合的oracle優化器 oracle的優化器共有3種 設定預設的...

oracle sql書寫規範

一 書寫規範 1 sql編寫時,大小寫一致 2 關鍵字單佔一行,如select from where and group by order by等 3 注意行縮排和對齊,建議語句中的關鍵字右對齊 4 使用空格,sql語句內的算術運算子 邏輯運算子 and or not 比較運算子 between a...