国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘洛县| 江安县| 临城县| 重庆市| 临沭县| 绍兴市| 东至县| 新竹市| 阜南县| 呼玛县| 黑龙江省| 抚顺市| 五大连池市| 仁化县| 雷波县| 黄石市| 华安县| 牙克石市| 东宁县| 崇文区| 华宁县| 通州市| 大余县| 富民县| 阿巴嘎旗| 朝阳区| 尖扎县| 娄烦县| 章丘市| 镇远县| 神木县| 旬阳县| 五华县| 克东县| 大厂| 台前县| 民乐县| 鹤岗市| 九江市| 廉江市| 额敏县|