oracle資料庫最佳化

來源:互聯網
上載者:User
oracle|資料|資料庫|最佳化
最佳化就是選擇最有效方法來執行SQL語句。Oracle最佳化器選擇它認為最有效

方法來執行SQL語句。

 

1).      IS NULL和IS NOT NULL

如果某列存在NULL值,即使對該列建立索引也不會提高效能。

2).      為不同的工作編寫不同的SQL語句塊

為完成不同的工作編寫一大塊SQL程式不是好方法。它往往導致每個任務的結果不優

化。若要SQL完成不同的工作,一般應編寫不同的語句塊比編寫一個要好。

3).      IN 和EXISTS

Select name from employee where name not in (select name from student);

Select name from employee where not exists (select name from student);

第一句SQL語句的執行效率不如第二句。

通過使用EXISTS,Oracle會首先檢查主查詢,然後運行子查詢直到它找到第一個匹配

項,這就節省了時間。Oracle在執行IN子查詢時,首先執行子查詢,並將獲得的結果

列表存放在一個加了索引的暫存資料表中。在執行子查詢之前,系統先將主查詢掛起,待

子查詢執行完畢,存放在暫存資料表中以後再執行主查詢。這也就是使用EXISTS比使用IN

通常查詢速度快的原因。

4).      NOT 運算子

Select * from employee where salary<>1000;

Select * from employee where salary<1000 or salary>1000;

第一句SQL語句的執行效率不如第二句,因為第二句SQL語句可以使用索引。

5).      Order By 語句

Order By 語句的執行效率很低,因為它要排序。應避免在Order By 字句中使用運算式。

6).      列的串連

select * from employee where name||department=’ZYZBIOINFO’;

select * from employee where name=’ZYZ’ and department=’BIOINFO’;

這兩個查詢,第二句比第一句會快,因為對於有串連運算子’||’的查詢,Oracle最佳化器是不

會使用索引的。

7).      萬用字元‘%’當萬用字元出現在搜尋字詞首時,Oracle最佳化器不使用索引

Select * from employee where name like ‘%Z%’;

Select * from employee where name like ‘Z%’;

第二句的執行效率會比第一句快,但查詢結果集可能會不同。

8).      應盡量避免混合類型的運算式

假設欄位studentno為VARCHAR2類型

有語句select * from student where studentno>123;

則Oracle會有一個隱含的類型轉換。隱含的類型轉換可能會使Oracle最佳化器忽略索引。

這時應使用顯式的類型轉換select * from student where studentno=to_char(123)。

9).DISTINCT
   DISTINCT總是建立一個排序,所以查詢速度也慢。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.