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

首頁 > 數據庫 > Oracle > 正文

ORACLE SQL性能優化系列 (九)

2024-08-29 13:46:45
字體:
來源:轉載
供稿:網友
Oracle SQL性能優化系列 (九) 
27. 基礎表的選擇 基礎表(Driving Table)是指被最先訪問的表(通常以全表掃描的方式被訪問). 根據優化器的不同, SQL語句中基礎表的選擇是不一樣的. 假如你使用的是CBO (COST BASED OPTIMIZER),優化器會檢查SQL語句中的每個表的物理大小,索引的狀態,然后選用花費最低的執行路徑.假如你用RBO (RULE BASED OPTIMIZER) , 并且所有的連接條件都有索引對應, 在這種情況下, 基礎表就是FROM 子句中列在最后的那個表.舉例:SELECT A.NAME , B.MANAGERFROM WORKER A, LODGING BWHERE A.LODGING = B.LODING;由于LODGING表的LODING列上有一個索引, 而且WORKER表中沒有相比較的索引, WORKER表將被作為查詢中的基礎表. 28. 多個平等的索引當SQL語句的執行路徑可以使用分布在多個表上的多個索引時, ORACLE會同時使用多個索引并在運行時對它們的記錄進行合并, 檢索出僅對全部索引有效的記錄.在ORACLE選擇執行路徑時,唯一性索引的等級高于非唯一性索引. 然而這個規則只有當WHERE子句中索引列和常量比較才有效.假如索引列和其他表的索引類相比較. 這種子句在優化器中的等級是非常低的.假如不同表中兩個想同等級的索引將被引用, FROM子句中表的順序將決定哪個會被率先使用. FROM子句中最后的表的索引將有最高的優先級.假如相同表中兩個想同等級的索引將被引用, WHERE子句中最先被引用的索引將有最高的優先級.舉例:DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引.SELECT ENAME,FROM EMPWHERE DEPT_NO = 20AND EMP_CAT = ‘A’;這里,DEPTNO索引將被最先檢索,然后同EMP_CAT索引檢索出的記錄進行合并. 執行路徑如下: TABLE access BY ROWID ON EMPAND-EQUALINDEX RANGE SCAN ON DEPT_IDXINDEX RANGE SCAN ON CAT_IDX 29. 等式比較和范圍比較當WHERE子句中有索引列, ORACLE不能合并它們,ORACLE將用范圍比較. 舉例:DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引.SELECT ENAMEFROM EMPWHERE DEPTNO > 20AND EMP_CAT = ‘A’; 這里只有EMP_CAT索引被用到,然后所有的記錄將逐條與DEPTNO條件進行比較. 執行路徑如下:TABLE ACCESS BY ROWID ON EMP INDEX RANGE SCAN ON CAT_IDX 30. 不明確的索引等級 當ORACLE無法判定索引的等級高低差別,優化器將只使用一個索引,它就是在WHERE子句中被列在最前面的.舉例:DEPTNO上有一個非唯一性索引,EMP_CAT也有一個非唯一性索引. SELECT ENAMEFROM EMPWHERE DEPTNO > 20AND EMP_CAT > ‘A’; 這里, ORACLE只用到了DEPT_NO索引. 執行路徑如下: TABLE ACCESS BY ROWID ON EMPINDEX RANGE SCAN ON DEPT_IDX 譯者按:我們來試一下以下這種情況:SQL> select index_name, uniqueness from user_indexes where table_name = 'EMP'; INDEX_NAME UNIQUENES------------------------------ ---------EMPNO UNIQUEEMPTYPE NONUNIQUE SQL> select * from emp where empno >= 2 and emp_type = 'A' ; no rows selected  Execution Plan----------------------------------------------------------0 SELECT STATEMENT Optimizer=CHOOSE1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP'
2 1 INDEX (RANGE SCAN) OF 'EMPTYPE' (NON-UNIQUE) 雖然EMPNO是唯一性索引,但是由于它所做的是范圍比較, 等級要比非唯一性索引的等式比較低!
 
 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太原市| 玛沁县| 同德县| 宁化县| 保定市| 绥芬河市| 衡山县| 上高县| 蒙阴县| 合山市| 康乐县| 诸城市| 北辰区| 建湖县| 汝南县| 江川县| 温州市| 缙云县| 太和县| 富裕县| 彩票| 榆树市| 阜城县| 邯郸市| 西安市| 荣成市| 奉化市| 久治县| 宁津县| 图木舒克市| 张家港市| 易门县| 唐山市| 芦山县| 定远县| 和龙市| 黎川县| 沁源县| 都匀市| 齐齐哈尔市| 那坡县|