大战熟女丰满人妻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索引的使用。

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 人人爱天天做夜夜爽毛片 | 激情五月综合综合久久69 | 在线免费不卡视频 | 精品久久久久久中文字幕 | 最新四虎4hu影库地址在线 | 精品欧美日韩一区二区三区 | 欧美激情在线播放一区二区 | 99热在线精品播放 | 一本一道| 久久国产精品二国产精品 | 久久精品视频免费观看 | 99久久999久久久综合精品涩 | 国产亚洲精品中文带字幕21页 | 亚洲免费在线视频播放 | 日本在线观看中文字幕 | 四虎永久在线精品 | 五月亭亭免费高清在线 | 一区二区不卡久久精品 | 999久久久免费精品国产牛牛 | 久久777国产线看是看精品 | 亚欧美视频 | 国产福利精品在线观看 | 国产成人亚洲精品91专区高清 | 一区二区三区国产精品 | 德国女人一级毛片免费 | 日本a∨在线播放高清 | 伊人色视频 | 99精品热| 狼人伊人干 | 国产一区二区三区免费观看 | 91福利在线视频 | 亚洲一级毛片免费看 | 国产大片91精品免费观看不卡 | 久久久久久在线 | 色综合久久久久久中文网 | 中文字幕专区高清在线观看 | 999在线播放 | 久久久久99精品成人片三人毛片 | 欧美高清免费精品国产自 | 国产成人一区二区在线不卡 | 亚洲黄色视屏 |