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;
感兴趣的可以自行验证

猜你喜欢

转载自blog.csdn.net/u011165335/article/details/81837183