oracle cardinality简析

本文介绍了一种SQL优化技巧——使用Hint来预测查询语句的基数值,从而帮助数据库优化器选择更高效的执行计划。文章详细解释了不同类型的Hint如何应用于全表扫描、索引范围扫描、快速扫描等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值