Titan專欄

          用文字來整理生命

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評論 :: 0 Trackbacks
            Nested loop join:
            
            步驟:確定一個驅(qū)動表(outer table),另一個表為inner table,驅(qū)動表中的每一行與inner表中的相應(yīng)記錄JOIN。類似一個嵌套的循環(huán)。適用于驅(qū)動表的記錄集比較?。?lt;10000)而且inner表需要有有效的訪問方法(Index)。需要注意的是:JOIN的順序很重要,驅(qū)動表的記錄集一定要小,返回結(jié)果集的響應(yīng)時間是最快的。
            
            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
            
            步驟:將兩個表中較小的一個在內(nèi)存中構(gòu)造一個HASH表(對JOIN KEY),掃描另一個表,同樣對JOIN KEY進行HASH后探測是否可以JOIN。適用于記錄集比較大的情況。需要注意的是:如果HASH表太大,無法一次構(gòu)造在內(nèi)存中,則分成若干個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
            
            步驟:將兩個表排序,然后將兩個表合并。通常情況下,只有在以下情況發(fā)生時,才會使用此種JOIN方式:
            
            1.RBO模式
            
            2.不等價關(guān)聯(lián)(>,<,>=,<=,<>)
            
            3.HASH_JOIN_ENABLED=false
            
            4.數(shù)據(jù)源已排序
            
            cost = (outer access cost * # of hash partitions) + inner access cost
          posted on 2005-12-18 00:06 Titan 閱讀(191) 評論(0)  編輯  收藏 所屬分類: 索引調(diào)優(yōu)
          主站蜘蛛池模板: 四川省| 开江县| 南平市| 瑞金市| 鸡东县| 永寿县| 吉安县| 宜城市| 四平市| 永春县| 茌平县| 黔江区| 松潘县| 嘉义县| 图片| 东乡| 新民市| 渑池县| 阳山县| 宜章县| 湖北省| 邹平县| 新民市| 吉木萨尔县| 日照市| 长宁区| 通渭县| 通城县| 盐池县| 扶绥县| 绍兴县| 日土县| 砀山县| 崇州市| 永靖县| 乌海市| 贵港市| 浦北县| 隆昌县| 东乌| 喀喇|