溫故而知新
規則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...