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 閱讀(194) 評論(0)  編輯  收藏 所屬分類: 索引調優
          主站蜘蛛池模板: 台北县| 桑日县| 子洲县| 洮南市| 安义县| 闻喜县| 勃利县| 抚松县| 元谋县| 阿勒泰市| 洞口县| 临安市| 贵南县| 和平县| 博乐市| 黔南| 丰原市| 吉木萨尔县| 望江县| 阜宁县| 新乡县| 宁乡县| 政和县| 安平县| 泸西县| 衢州市| 牙克石市| 阿克| 新乡市| 丽江市| 广东省| 佳木斯市| 沽源县| 上饶市| 丹寨县| 郸城县| 南木林县| 分宜县| 凌云县| 扶风县| 六盘水市|