ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用index或者NO_INDEX 提示

使用index或者NO_INDEX 提示

原创 Linux操作系统 作者:fengjin821 时间:2009-05-06 10:58:24 0 删除 编辑

今天在ORACLE8.17上一个做一个统计SQL,开始用

Select /*+ ordered  parallel 8 index (a index_a) */
     a.msisdn  From dbuser.table_b   b,
               dbuser.table_a a
       Where  a.serv_id=b.serv_id And A.BILLING_CYCLE_ID<'200411' And a.billing_cycle_id>'200406'
执行计划如下

SELECT STATEMENT, GOAL = RULE   Cost=1221 Cardinality=120 Bytes=3720
 HASH JOIN   Cost=1221 Cardinality=120 Bytes=3720
  TABLE ACCESS FULL Object wner=ACCOUNT Object name=table_b Cost=391 Cardinality=2000 Bytes=16000
  TABLE ACCESS BY INDEX ROWID Object wner=ACCOUNT Object name=table_a Cost=826 Cardinality=6 Bytes=138
   INDEX FULL SCAN Object wner=SALES Object name=index_a Cost=26 Cardinality=6 

非常奇怪,居然使用的是INDEX FULL SCAN 

然后尝试使用no_index ,排除可能使用索引

Select /*+ ordered  parallel 8 no_index (a index_b) */
     a.msisdn  From dbuser.table_b   b,
               dbuser.table_a a
       Where  a.serv_id=b.serv_id And A.BILLING_CYCLE_ID<'200411' And a.billing_cycle_id>'200406'
 
 结果居然是我想要的,执行计划如下

SELECT STATEMENT, GOAL = RULE   Cost=4391 Cardinality=120 Bytes=3720
 NESTED LOOPS   Cost=4391 Cardinality=120 Bytes=3720
  TABLE ACCESS FULL Object wner=ACCOUNT Object name=table_b Cost=391 Cardinality=2000 Bytes=16000
  TABLE ACCESS BY INDEX ROWID Object wner=ACCOUNT Object name=table_a Cost=2 Cardinality=6 Bytes=138
   INDEX RANGE SCAN Object wner=SALES Object name=index_a Cost=1 Cardinality=6 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13165828/viewspace-594281/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-29

  • 博文量
    191
  • 访问量
    507925