执行计划使用UK cost不正确的原因 隐式转化

隐式转化  RAW类型

正常用了UK cost为1 

SELECT /*+ index(qb , TABA_uk1) */
 QB.NO + 1
  FROM XX.TABA QB
 WHERE QB.A = 'H'
   AND QB.B = :B5
   AND QB.C = TO_DATE(:B4, 'YYYY-MM-DD')
   AND QB.D = :B3
   AND QB.E = NVL(:B2, QB.E)
   AND QB.F = :B1
 ORDER BY QB.NO DESC
 FETCH FIRST 1 ROWS ONLY
 
 
  Plan Hash Value  : 3596379467 

------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name             | Rows | Bytes | Cost | Time     |
------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                  |    1 |    39 | 6578 | 00:00:01 |
| * 1 |   VIEW                                         |                  |    1 |    39 | 6578 | 00:00:01 |
| * 2 |    WINDOW SORT PUSHED RANK                     |                  |    1 |    73 | 6578 | 00:00:01 |
| * 3 |     TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | TABA     |    1 |    73 | 6577 | 00:00:01 |
| * 4 |      INDEX FULL SCAN                           | TABA_UK1 |    1 |       | 6576 | 00:00:01 |
------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter("from$_subquery$_002"."rowlimit_$$_rownumber"<=1)
* 2 - filter(ROW_NUMBER() OVER ( ORDER BY INTERNAL_FUNCTION("QB"."NO") DESC )<=1)
* 3 - filter("QB"."A"='H')
* 4 - access("QB"."D"=:B3 AND "QB"."C"=TO_DATE(:B4,'YYYY-MM-DD'))
* 4 - filter(RAWTOHEX("QB"."B")=:B5 AND "QB"."E"=NVL(:B2,"QB"."E") AND "QB"."C"=TO_DATE(:B4,'YYYY-MM-DD') AND "QB"."D"=:B3 AND
  RAWTOHEX("QB"."F")=:B1)
  
  
  
  
  
  SELECT /*+ index(qb , TABA_fk4) */
 QB.NO + 1
  FROM XX.TABA QB
 WHERE QB.A = 'H'
   AND QB.B = :B5
   AND QB.C = TO_DATE(:B4, 'YYYY-MM-DD')
   AND QB.D = :B3
   AND QB.E = NVL(:B2, QB.E)
   AND QB.F = :B1
 ORDER BY QB.NO DESC
 FETCH FIRST 1 ROWS ONLY
 
  
   Plan Hash Value  : 1152405338 

---------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name             | Rows   | Bytes | Cost  | Time     |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                  |      1 |    39 | 13312 | 00:00:01 |
| * 1 |   VIEW                                         |                  |      1 |    39 | 13312 | 00:00:01 |
| * 2 |    WINDOW SORT PUSHED RANK                     |                  |      1 |    73 | 13312 | 00:00:01 |
|   3 |     PARTITION LIST SINGLE                      |                  |      1 |    73 | 13311 | 00:00:01 |
| * 4 |      TABLE ACCESS BY LOCAL INDEX ROWID BATCHED | TABA     |      1 |    73 | 13311 | 00:00:01 |
| * 5 |       INDEX RANGE SCAN                         | TABA_FK4 | 489026 |       |  1216 | 00:00:01 |
---------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter("from$_subquery$_002"."rowlimit_$$_rownumber"<=1)
* 2 - filter(ROW_NUMBER() OVER ( ORDER BY INTERNAL_FUNCTION("QB"."NO") DESC )<=1)
* 4 - filter(RAWTOHEX("QB"."B")=:B5 AND "QB"."E"=NVL(:B2,"QB"."E") AND "QB"."C"=TO_DATE(:B4,'YYYY-MM-DD') AND "QB"."D"=:B3 AND
  RAWTOHEX("QB"."F")=:B1)
* 5 - access("QB"."A"='H')---- distinct 为1的 分区列


SELECT /*+ index(qb , TABA_fk4) */
 QB.NO + 1
  FROM XX.TABA QB
 WHERE QB.A = 'H'
   AND QB.B = hextoraw(:B5)
   AND QB.C = TO_DATE(:B4, 'YYYY-MM-DD')
   AND QB.D = :B3
   AND QB.E = NVL(:B2, QB.E)
   AND QB.F = hextoraw(:B1)
 ORDER BY QB.NO DESC
 FETCH FIRST 1 ROWS ONLY
 
  Plan Hash Value  : 1152405338 

---------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name             | Rows   | Bytes | Cost  | Time     |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                  |      1 |    39 | 13312 | 00:00:01 |
| * 1 |   VIEW                                         |                  |      1 |    39 | 13312 | 00:00:01 |
| * 2 |    WINDOW SORT PUSHED RANK                     |                  |      1 |    73 | 13312 | 00:00:01 |
|   3 |     PARTITION LIST SINGLE                      |                  |      1 |    73 | 13311 | 00:00:01 |
| * 4 |      TABLE ACCESS BY LOCAL INDEX ROWID BATCHED | TABA     |      1 |    73 | 13311 | 00:00:01 |
| * 5 |       INDEX RANGE SCAN                         | TABA_FK4 | 489026 |       |  1216 | 00:00:01 |
---------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter("from$_subquery$_002"."rowlimit_$$_rownumber"<=1)
* 2 - filter(ROW_NUMBER() OVER ( ORDER BY INTERNAL_FUNCTION("QB"."NO") DESC )<=1)
* 4 - filter("QB"."B"=HEXTORAW(:B5) AND "QB"."E"=NVL(:B2,"QB"."E") AND "QB"."C"=TO_DATE(:B4,'YYYY-MM-DD') AND "QB"."D"=:B3 AND
  "QB"."F"=HEXTORAW(:B1))
* 5 - access("QB"."A"='H')


SELECT /*+ index(qb , TABA_uk1) */
 QB.NO + 1
  FROM XX.TABA QB
 WHERE QB.A = 'H'
   AND QB.B = hextoraw(:B5)
   AND QB.C = TO_DATE(:B4, 'YYYY-MM-DD')
   AND QB.D = :B3
   AND QB.E = NVL(:B2, QB.E)
   AND QB.F = hextoraw(:B1)
 ORDER BY QB.NO DESC
 FETCH FIRST 1 ROWS ONLY
 
  Plan Hash Value  : 1252820133 

------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name             | Rows | Bytes | Cost | Time     |
------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                  |    1 |    39 |    5 | 00:00:01 |
| * 1 |   VIEW                                         |                  |    1 |    39 |    5 | 00:00:01 |
| * 2 |    WINDOW SORT PUSHED RANK                     |                  |    1 |    73 |    5 | 00:00:01 |
| * 3 |     TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | TABA     |    1 |    73 |    4 | 00:00:01 |
| * 4 |      INDEX RANGE SCAN                          | TABA_UK1 |    1 |       |    3 | 00:00:01 |
------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter("from$_subquery$_002"."rowlimit_$$_rownumber"<=1)
* 2 - filter(ROW_NUMBER() OVER ( ORDER BY INTERNAL_FUNCTION("QB"."NO") DESC )<=1)
* 3 - filter("QB"."A"='H')
* 4 - access("QB"."B"=HEXTORAW(:B5) AND "QB"."D"=:B3 AND "QB"."C"=TO_DATE(:B4,'YYYY-MM-DD') AND "QB"."F"=HEXTORAW(:B1))
* 4 - filter("QB"."E"=NVL(:B2,"QB"."E"))
 
 

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值