国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle數據庫優化

2024-08-29 13:29:12
字體:
來源:轉載
供稿:網友
中國最大的web開發資源網站及技術社區,

優化就是選擇最有效的方法來執行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總是建立一個排序,所以查詢速度也慢。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台州市| 车险| 孝义市| 富阳市| 旅游| 闽清县| 凤翔县| 册亨县| 泰兴市| 烟台市| 章丘市| 眉山市| 金昌市| 武义县| 承德市| 尉犁县| 奎屯市| 扶风县| 富锦市| 汨罗市| 兴海县| 郯城县| 资阳市| 定南县| 孟村| 兴安县| 渭南市| 马鞍山市| 潢川县| 百色市| 桦南县| 通渭县| 柘城县| 邵阳县| 甘孜县| 上思县| 锡林浩特市| 西城区| 安塞县| 潼南县| 建湖县|