Titan專欄

          用文字來整理生命

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評論 :: 0 Trackbacks
            Nested loop join:
            
            步驟:確定一個驅動表(outer table),另一個表為inner table,驅動表中的每一行與inner表中的相應記錄JOIN。類似一個嵌套的循環。適用于驅動表的記錄集比較小(<10000)而且inner表需要有有效的訪問方法(Index)。需要注意的是:JOIN的順序很重要,驅動表的記錄集一定要小,返回結果集的響應時間是最快的。
            
            cost = outer access cost + (inner access cost * outer cardinality)
            
            |  2 |  NESTED LOOPS        |       |   3 |  141 |   7 (15)|
            |  3 |  TABLE ACCESS FULL     | EMPLOYEES  |   3 |  60 |   4 (25)|
            |  4 |  TABLE ACCESS BY INDEX ROWID| JOBS     |  19 |  513 |   2 (50)|
            |  5 |   INDEX UNIQUE SCAN     | JOB_ID_PK  |   1 |    |      |
            
            EMPLOYEES為outer table, JOBS為inner table.
            
            Hash join
            
            步驟:將兩個表中較小的一個在內存中構造一個HASH表(對JOIN KEY),掃描另一個表,同樣對JOIN KEY進行HASH后探測是否可以JOIN。適用于記錄集比較大的情況。需要注意的是:如果HASH表太大,無法一次構造在內存中,則分成若干個partition,寫入磁盤的temporary segment,則會多一個寫的代價,會降低效率。
            
            cost = (outer access cost * # of hash partitions) + inner access cost
            --------------------------------------------------------------------------
            | Id | Operation      | Name    | Rows | Bytes | Cost (%CPU)|
            --------------------------------------------------------------------------
            |  0 | SELECT STATEMENT   |       |  665 | 13300 |   8 (25)|
            |  1 | HASH JOIN      |       |  665 | 13300 |   8 (25)|
            |  2 |  TABLE ACCESS FULL | ORDERS    |  105 |  840 |   4 (25)|
            |  3 |  TABLE ACCESS FULL | ORDER_ITEMS |  665 | 7980 |   4 (25)|
            --------------------------------------------------------------------------
            
            ORDERS為HASH TABLE,ORDER_ITEMS掃描
            
            Sort merge join
            
            步驟:將兩個表排序,然后將兩個表合并。通常情況下,只有在以下情況發生時,才會使用此種JOIN方式:
            
            1.RBO模式
            
            2.不等價關聯(>,<,>=,<=,<>)
            
            3.HASH_JOIN_ENABLED=false
            
            4.數據源已排序
            
            cost = (outer access cost * # of hash partitions) + inner access cost
          posted on 2005-12-18 00:06 Titan 閱讀(191) 評論(0)  編輯  收藏 所屬分類: 索引調優
          主站蜘蛛池模板: 额济纳旗| 微博| 尼勒克县| 射阳县| 玉环县| 延寿县| 盈江县| 浦城县| 迭部县| 富源县| 普安县| 丰镇市| 岳池县| 沈阳市| 旺苍县| 蓝田县| 前郭尔| 惠东县| 高雄县| 闻喜县| 乌兰察布市| 鞍山市| 南丰县| 全南县| 定安县| 息烽县| 西林县| 昭平县| 秦皇岛市| 合江县| 巨野县| 兴化市| 错那县| 儋州市| 莒南县| 沙河市| 蓬溪县| 永仁县| 盖州市| 崇明县| 洱源县|