oracle cardinality简析

此hint的作用
向优化器提供对某个查询语句的整体或部分的预测基数值,并通过参考该基数值来为查询语句制定执行计划。如果在该提示中没有指定表的名称,则该基数值将被视为从该查询语句所获得的最终结果行数。
针对单个目标表而言:
生效路径:
全表扫; 索引范围扫,索引全扫描fs,索快速扫描ffs


create index emp_ename_idx on emp(ename);
--全表扫
select  /*+ cardinality(e 100)*/ * from emp e;
--范围索引
select  /*+ index(e EMP_NAME_IDX) cardinality(e 100)*/ * from emp e where e.ename='sss';

--fs
select  /*+ index(e PK_EMP ) cardinality(e 100)*/ ename from emp e ;

--ffs
select  /*+ index_ffs(e PK_EMP ) cardinality(e 100)*/ count(1) from emp e ;


--唯一扫描此hint失效,你可以想想为什么
select  /*+ index(e) cardinality(e 100)*/ * from emp e where e.empno=99;
感兴趣的可以自行验证
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值