Oracle中直方图对执行计划的影响详解

 更新时间:2017年09月29日 10:17:11   作者:jerome_lamb  
这篇文章主要给大家介绍了关于Oracle数据库中直方图对执行计划的影响的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

大家应该都知道,在Oracle数据库中,CBO会默认目标列的数据在其最小值low_value和最大值high_value之间均匀分布,并按照均匀分布原则,来计算目标列

施加查询条件后的可选择率以及结果集的cardinality.

如果对目标收集了直方图,则意味着CBO不再认为目标列上的数据是均匀分布的。CBO会用该列上的直方图的统计信息计算返回结果集的cardinality.

验证直方图对执行计划的影响步骤:

1、创建一张表T1

2、往表中插入倾斜度很高的数据

3、在B字段上创建索引

4、删除表中直方图信息

5、查看直方图信息

HISTOGRAM:NONE 代表没有直方图信息

6、查询b=2的执行计划

从执行计划可以看出:查询走的是全表扫描,因为表T1中的数据被视为了均匀分布,CBO认为走

全表比走索引会更快

7、收集直方图信息

8、查询直方图信息

HISTOGRAM:FREQUENCY 频率直方图

可以看出此时表中已经有直方图信息

9、再次查看b=2的执行计划

这个时候可以看出,执行计划走了索引,结果正确!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • oracle日期时间型timestamp的深入理解

    oracle日期时间型timestamp的深入理解

    本篇文章是对oracle中日期时间型timestamp函数进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • oracle 11g中exp无法导出空表问题的快速解决方法

    oracle 11g中exp无法导出空表问题的快速解决方法

    在一些生产系统中,有些时候我们为了进行oracle数据库部分数据的备份和迁移,会使用exp进行数据的导出,但在实际导出的时候,我们发现导出的时候,发现很多空表未进行导出,今天我们给出一个快速解决该问题的办法,需要的朋友可以参考下
    2024-12-12
  • ORACLE 自动提交问题

    ORACLE 自动提交问题

    通过PL/SQL DEVELOPER向数据库中的某个表中插入一定量的数据,通过select 语句可以看到已经插入到表中,然而诡异的是通过程序却无法查询到新插入的数据。
    2009-06-06
  • 登录oracle数据库时密码忘记的解决方法

    登录oracle数据库时密码忘记的解决方法

    登录本地oracle数据库时,忘记密码了,这种情况时有发生,下面有个不错的解决方法,希望对大家有所帮助
    2014-01-01
  • SQL PLUS基本命令的使用方法示例

    SQL PLUS基本命令的使用方法示例

    这篇文章主要给大家介绍了关于SQL PLUS基本命令的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Oracle如何利用交叉连接生成数字序列

    Oracle如何利用交叉连接生成数字序列

    这篇文章主要介绍了Oracle如何利用交叉连接生成数字序列问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Oracle触发器用法实例详解

    Oracle触发器用法实例详解

    这篇文章主要介绍了Oracle触发器用法,结合实例形式详细分析了Oracle触发器的概念,功能,语法及相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • windows中oracle存储过程加密的实例代码

    windows中oracle存储过程加密的实例代码

    这篇文章主要介绍了windows中oracle存储过程加密的实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Oracle使用RMAN进行数据库恢复的实现步骤

    Oracle使用RMAN进行数据库恢复的实现步骤

    使用 RMAN(Recovery Manager)恢复 Oracle 数据库是确保数据在灾难情况下能够得到恢复的关键步骤,以下是详细的指导和代码示例,展示如何使用 RMAN 进行数据库恢复,需要的朋友可以参考下
    2024-09-09
  • 将mysql转换到oracle必须了解的50件事

    将mysql转换到oracle必须了解的50件事

    我其实是同一天看到Robert Treat几人整理的”Mysql 迁移到Oracle前需要了解的50件事“与Baron Schwartz的”Oracle迁移到Mysql之前需要了解的50件事“的,只是Baron Schwartz的这个列表可能对大家更加有用处,也就先将其整出来了.
    2010-06-06

最新评论