
oracle优化
孟德三笑
原谅我这一生不羁放纵爱自由
展开
-
Oracle优化之直方图
当数据列基数较低的时候 ,该列数据分布就可能不均衡。这就导致在查询该列的时候,最优的结果可能走索引,也可能走全表扫描。但是如果我们没有对该列收集直方图统计信息,那么基于成本的优化器(CBO)就会认为该列数据分布是均衡的,导致没有按最优的执行计划来查询。 这是因为执行计划里的rows是假的,是根据统计信息和一些数学公式计算出来的。而收集直方图信息,就是帮助执行计划计算 得到更加精准的rows。 ...原创 2020-10-04 15:59:19 · 260 阅读 · 1 评论 -
oracle优化之选择性
基数与表的总行数的比值就是选择性 当我们学习了基数后,可以得出一个大概的结论:基数比较小时,查询不走索引,基数比较大时,查询走索引。但是这样太笼统了,什么情况下基数算大,什么情况下算小呢。比如一个字段的基数是10000,应该比较大了吧,但是这张表本身有100亿条数据。相形之下,就不那么大了。 所以单独看列的基数就没有什么意义了,这就引入了列的选择性。当一个列的选择性大于20%时,说明这个列的数据分布就比较均衡了。这时如果在where子句中对这个字段做条件筛选,就应该创建索引。当然,如果表的数据量比较小的原创 2020-09-23 14:40:48 · 496 阅读 · 0 评论 -
oracle优化之基数
基数指的是一个字段中不重复值的个数。 比如性别列,它的值有男和女两种情况,所以它的基数是2 以scott账户的emp表为例,执行以下sql select count(1) as num,count(distinct job) as jobnum,count(distinct deptno) from emp 由结果可以看出,emp表的行数为14,job列的基数为5,deptno列的基数为3 当字段的基数越大时,该列数据的分布可能就越均衡。字段的基数越小时,该列数据的分布可能就越不均衡。举个原创 2020-09-22 17:19:04 · 702 阅读 · 0 评论