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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 小金县| 财经| 时尚| 巴彦县| 雷州市| 麻城市| 平潭县| 盐亭县| 亳州市| 梁山县| 林芝县| 上犹县| 清新县| 永州市| 东平县| 和林格尔县| 白河县| 习水县| 三原县| 顺昌县| 冀州市| 保山市| 古田县| 昆山市| 阳泉市| 都昌县| 宁都县| 漳平市| 金塔县| 饶河县| 华安县| 额尔古纳市| 滁州市| 固原市| 九龙县| 台东县| 海安县| 柘荣县| 长岭县| 治多县| 闻喜县|