oracle之sql語句優化

2021-09-12 04:22:09 字數 1302 閱讀 7920

sql語句的優化

1.在where子句中使用 is null 或 is not null 時,oracle優化器就不能使用索引了.

2.對於有連線的列,即使最有乙個是靜態的值,優化器也不會使用索引

比如: select * from employss where first_name||''||last_name='beill cliton'

要寫成 :select * from employss where first_name='beill' and last_name='beill cliton'

這時oracle 就會採用 基於 last_name 的索引

3.帶萬用字元 (%) 的 like 語句

比如: select * from employee where last_name like '%cliton%';

%在詞首出現oracle系統就不能使用 last_name 的索引;

select * from employee where last_name like 'cliton%'

4:order by

任何在order by語句的非索引項或者表示式都會降低查詢效率;

5:not  

<>是就相當於not

① select * from salary<>3000;

② select * from salary >3000 or salary <3000

①和②的查詢結果是一樣的,但②允許oracle對salary列使用索引,效率高

not會產生在和在索引列上使用函式相同的影響. 當oracle」遇到」not,他就會停止使用索引轉而執行全表掃瞄.

6:  exist 代替 in

not exist 代替 not in

select * from a where id in(select id from b)

以上查詢使用了in語句,in()只執行一次,它查出b表中的所有id欄位並快取起來.之後,檢查a表的id是否與b表中的 id相等,如果相等則將 a表的記錄加入結果集中,直到遍歷完a表的所有記錄.

exist 比 in 的執行效率更高

7:[img]

8.where條件的順序

[img]

9:union all 和 union

[img]

oracle的SQL語句效能優化

使用oracle資料庫的應用系統,有時出現sql效能突然變差,特別是對於oltp型別系統執行頻繁的核心sql,如果出現效能問題,通常會影響整個資料庫的效能,進而影響整個系統的正常執行。這是常常遇到的問題,也是一些dba的挑戰。sql效能變差原因分析 sql的效能變差,通常是在sql語句重新進行了解析...

SQL 語句優化 OR 語句優化案例

從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...

SQL語句優化之經典總結

不可不優化的where子句 1.例 下列sql條件語句中的列都建有恰當的索引,但執行速度卻非常慢 select from record where substring card no,1,4 5378 13秒 select from record where amount 30 1000 11秒 s...