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

首頁 > 數據庫 > Oracle > 正文

ORACLE SQL性能優化系列(三)

2024-08-29 13:32:50
字體:
來源:轉載
供稿:網友

4. 選擇最有效率的表名順序(只在基于規則的優化器中有效)

Oracle的解析器按照從右到左的順序處理FROM子句中的表名,因此FROM子句中寫在最后的表(基礎表 driving table)將被最先處理. 在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表.當ORACLE處理多個表時, 會運用排序及合并的方式連接它們.首先,掃描第一個表(FROM子句中最后的那個表)并對記錄進行派序,然后掃描第二個表(FROM子句中最后第二個表),最后將所有從第二個表中檢索出的記錄與第一個表中合適記錄進行合并.


例如:

     表 TAB1 16,384 條記錄

     表 TAB2 1      條記錄

     選擇TAB2作為基礎表 (最好的方法)

     select count(*) from tab1,tab2   執行時間0.96秒

    選擇TAB2作為基礎表 (不佳的方法)

     select count(*) from tab2,tab1   執行時間26.09秒


如果有3個以上的表連接查詢, 那就需要選擇交叉表(intersection table)作為基礎表, 交叉表是指那個被其他表所引用的表.


例如:


   EMP表描述了LOCATION表和CATEGORY表的交集.


 SELECT *


FROM LOCATION L ,


      CATEGORY C,

      EMP E

WHERE E.EMP_NO BETWEEN 1000 AND 2000


AND E.CAT_NO = C.CAT_NO


AND E.LOCN = L.LOCN

 

將比下列SQL更有效率

 

SELECT *


FROM EMP E ,

LOCATION L ,

      CATEGORY C

WHERE  E.CAT_NO = C.CAT_NO

AND E.LOCN = L.LOCN

AND E.EMP_NO BETWEEN 1000 AND 2000


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 资溪县| 双江| 荣昌县| 彰化市| 庆安县| 都兰县| 万源市| 呼和浩特市| 罗甸县| 鄂尔多斯市| 沭阳县| 舞阳县| 裕民县| 崇明县| 乌兰察布市| 三门县| 江安县| 远安县| 嵊州市| 满洲里市| 竹北市| 社旗县| 雅安市| 玉溪市| 车险| 辽阳县| 藁城市| 顺义区| 都安| 芜湖县| 抚宁县| 砚山县| 会理县| 镇雄县| 济南市| 南投市| 基隆市| 林甸县| 漳平市| 德清县| 东乡|