大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 淺談Oracle索引提高效率

淺談Oracle索引提高效率

更新時間:2021-03-04 17:53:50 來源:動力節點 瀏覽1232次

Oracle數據庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用于各類大、中、小微機環境。在關系數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容,能夠有效幫助Oracle數據庫提高效率,Oracle索引提高效率已經廣泛應用到了Oracle數據庫中。

1、特點優點:提高效率 主鍵的唯一性驗證代價:需要空間存儲 定期維護重構索引:

LTER INDEX  REBUILD 

2、Oracle對索引有兩種訪問模式

索引唯一掃描 (Index Unique Scan)

索引范圍掃描 (Index Range Scan)

3、基礎表的選擇

基礎表(Driving Table)是指被最先訪問的表(通常以全表掃描的方式被訪問)。根據優化器的不同,SQL語句中基礎表的選擇是不一樣的。

如果你使用的是CBO (COST BASED OPTIMIZER),優化器會檢查SQL語句中的每個表的物理大小,索引的狀態,然后選用花費最低的執行路徑。

如果你用RBO (RULE BASED OPTIMIZER), 并且所有的連接條件都有索引對應,在這種情況下,基礎表就是FROM 子句中列在最后的那個表。

4、多個平等的索引

當SQL語句的執行路徑可以使用分布在多個表上的多個索引時,ORACLE會同時使用多個索引并在運行時對它們的記錄進行合并,檢索出僅對全部索引有效的記錄。

在ORACLE選擇執行路徑時,唯一性索引的等級高于非唯一性索引。然而這個規則只有當WHERE子句中索引列和常量比較才有效。如果索引列和其他表的索引類相比較。這種子句在優化器中的等級是非常低的。

如果不同表中兩個相同等級的索引將被引用,FROM子句中表的順序將決定哪個會被率先使用。FROM子句中最后的表的索引將有最高的優先級。

如果相同表中兩個相同等級的索引將被引用,WHERE子句中最先被引用的索引將有最高的優先級。

5、等式比較優先于范圍比較DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引。

SELECT ENAME FROM EMPWHERE DEPTNO > 20AND EMP_CAT = 'A'

這里只有EMP_CAT索引被用到,然后所有的記錄將逐條與DEPTNO條件進行比較. 執行路徑如下:

TABLE ACCESS BY ROWID ON EMPINDEX RANGE SCAN ON CAT_IDX

即使是唯一性索引,如果做范圍比較,其優先級也低于非唯一性索引的等式比較。

6、不明確的索引等級當ORACLE無法判斷索引的等級高低差別,優化器將只使用一個索引,它就是在WHERE子句中被列在最前面的。DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引。

SELECT ENAME FROM EMPWHERE DEPTNO > 20AND EMP_CAT > 'A'

這里, ORACLE只用到了DEPT_NO索引. 執行路徑如下:

TABLE ACCESS BY ROWID ON EMP

INDEX RANGE SCAN ON DEPT_IDX

7、強制索引失效如果兩個或以上索引具有相同的等級,你可以強制命令ORACLE優化器使用其中的一個(通過它,檢索出的記錄數量少) 。

SELECT ENAMEFROM EMPWHERE EMPNO = 7935AND DEPTNO + 0 = 10 ???/*DEPTNO上的索引將失效*/AND EMP_TYPE || '' = 'A' ?/*EMP_TYPE上的索引將失效*/

8、避免在索引列上使用計算WHERE子句中,如果索引列是函數的一部分。優化器將不使用索引而使用全表掃描。

/*低效SQL*/SELECT * FROM DEPTWHERE SAL * 12 > 25000;

/*高效SQL*/SELECT * FROM DEPTWHERE SAL > 25000/12;

9、自動選擇索引如果表中有兩個以上(包括兩個)索引,其中有一個唯一性索引,而其他是非唯一性索引。在這種情況下,ORACLE將使用唯一性索引而完全忽略非唯一性索引。

SELECT ENAME FROM EMP WHERE EMPNO = 2326AND DEPTNO = 20;

這里,只有EMPNO上的索引是唯一性的,所以EMPNO索引將用來檢索記錄。

SELECT ENAME FROM EMP WHERE EMPNO = 2326AND DEPTNO = 20;

10、避免在索引列上使用NOT通常,我們要避免在索引列上使用NOT,NOT會產生在和在索引列上使用函數相同的影響。當ORACLE遇到NOT,它就會停止使用索引轉而執行全表掃描。

/*低效SQL: (這里,不使用索引)*/SELECT * FROM DEPTWHERE NOT DEPT_CODE = 0

/*高效SQL: (這里,使用索引)*/SELECT * FROM DEPTWHERE DEPT_CODE > 0

我們在學習如何使用Oracle索引提高Oracle數據庫的效率時,有許多需要注意的細節,以避免產生多余的工作量。本站的Oracle教程中,對Oracle索引的各種運用都給出了具體的案例,結合案例讓我們使用起來能夠更容易理解Oracle索引的使用。

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产高清在线精品一区a | 国产一区二区在线视频观看 | 午夜一级毛片免费视频 | 欧美日韩亚洲国产一区二区三区 | 国产福利不卡视频在免费播放 | 亚洲国产网 | 久久婷婷国产一区二区三区 | 日日夜夜天天人人 | 我色综合 | 国产一区二区在线观看视频 | 精品三级国产一区二区三区四区 | 四虎影视国产精品永久在线 | 一级做受视频免费是看美女 | 久久国产香蕉视频 | 91视频网址入口 | 日本高清h色视频在线观看 日本高清不卡二区 | 欧美一区二区在线视频 | 欧美日韩不卡视频 | 四虎在线精品观看免费 | 欧美视频在线观看一区二区 | 精品网站 | 精品一区二区久久久久久久网站 | 乱人伦99久久 | 一本久久a久久精品亚洲 | 色哦色哦哦色天天综合 | 一区二区三区中文国产亚洲 | 麻豆精品永久免费视频 | 九九视频在线播放 | 婷婷亚洲综合五月天在线 | 99精品在线视频观看 | 日韩欧美视频在线播放 | 免费观看一级特黄欧美大片 | japanese国产高清麻豆 | 国产毛片一区二区 | 中文字幕一区视频 | 国产精品免费看久久久香蕉 | 久久久精品午夜免费不卡 | 91精品国产露脸在线 | 国内精品中文字幕 | 五月婷婷激情综合 | 久久www免费人成看片入口 |