Oracle SQL 查詢優化 Part1

2021-07-10 22:54:42 字數 2629 閱讀 4146

一、空值處理:

1. 查詢空值 null:
select * from emp where emp.empdesc = null;

select * from emp where emp.empdesc is null;

2. 空值 null 不能做「加、減、乘、除、比較」等運算:
select * from emp where emp.empsalary >= null;

3. nvl、coalesce 將空值轉換為實際值:nvl 只能接受兩個引數,而 coalesce 可以接受多個引數,返回第乙個不是 null 的值。例如下邊的兩個 sql 是等價的:

/* 資料準備 */

create table coal(

c1 number(6, 2),

c2 number(6, 2),

c3 number(6, 2),

c4 number(6, 2),

c5 number(6, 2),

c6 number(6, 2)

);insert into coal values(null, null, 1, null, 2, null);

insert into coal values(null, null, null, 3, null, 2);

/* coal 表資料 */

select * from coal;

下邊兩句等價,coalesce 函式從第乙個引數開始從左到右,依次判斷是否為 null, 返回第一不為 null 的值,直至最後乙個引數的值。

/* nvl、coalesce 下邊兩句等價 */

select coalesce(c1, c2, c3, c4, c5, c6) c from coal;

select nvl(nvl(nvl(nvl(nvl(c1, c2), c3), c4), c5), c6) c from coal;

二、rownum 限制返回的行數:

1. rownum 是返回資料乙個排序標識:rownum 會依次對返回的每一條資料做乙個標識,經常在分頁的時候會見到。這裡紅色著重標註「返回」兩字,是指 rownum 不是記錄的固有標識(比如 rowid 是記錄的物理標誌),這個下邊會舉例。先說 rownum 的用法:

select * from emp where rownum <= 2;
2. rownum 不是記錄的固有標誌:只有資料返回以後才能用 rownum,只是返回資料的乙個標識,例如下邊的查詢結果就為空:

select * from emp where rownum = 2
而如果想要返回結果集的第二條資料,需要巢狀一層,這也是分頁的做法:

select * from (select emp.*, rownum rown from emp) where rown = 2

三、模糊查詢的萬用字元與轉義字元:

1. 模糊查詢的兩個萬用字元 『%』、『_』:『%』 是替代乙個或多個字元,而 『_』 是替代乙個字元。『%』 都清楚,只舉例 『_』:

模糊查詢條件改為 『_p』 就查不出結果,『_』 只能匹配乙個字元:

select * from emp where emp.empno like '_p%';

2. sql 中查詢類似 『_』、『%』 特殊字元的,用 『/』 escape 『/』 實現:

select * from emp where emp.empdesc like '/_%' escape '/';

ORACLE SQL查詢優化

語句快取 sql語句 共享池 快取記憶體 軟解析 從共享池中 取出 以前的解析 過的語句 硬解析 重新開始新的解析硬解析會消耗資源多很多,sql可以復用還是要復用的。sql語句 hsah 值 當做key 存入快取記憶體中 sql語句的大小寫會影響key 使用繫結變數,sql還可以復用所以,sql查詢...

Oracle SQL 查詢優化 Part2

一 排序 1.按返回列的順序排序 通常排序都是 order by 後邊加列名,也可以寫為 order by 後邊加列所在的次序。下邊的查詢結果是一樣的 order by 加返回列所在的次序 select emp.empsalary,emp.from emp order by 1 asc order ...

Oracle Sql優化筆記

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