Oracle CBO知识点
来源:互联网 发布:淘宝点赞买家秀要钱吗 编辑:程序博客网 时间:2024/05/29 16:13
CBO说明(第一部分)
1.
Cost Based Optimizer(CBO)基于成本,或者讲统计信息
ORACLE已经明确声明在ORACLE9i之后的版本中(ORACLE 10G ),RBO将不再支持。因此选择CBO是必然的趋势。
2.
a)
b)
各“执行计划”的cost的计算根据,依赖于数据表中数据的统计分布,ORACLE数据库本身对该统计分布并不清楚,必须要分析表和相关的索引(使用ANALYZE命令),才能搜集到CBO所需的数据。
c)
ORACLE自7版以来采用的许多新技术都是基于CBO的,如星型连接排列查询,哈希连接查询,函数索引,和并行查询等。
d)
3.
4.
[全部使用ANALYZE命令分析过]指的是统计分析的结果表针对于all_tables该表的记录值不为空。因表从未做统计分析或统计分析被删除时,all_tables表针对要操作表的记录值为空。
5.
6.
Oracle CBO知识点(二)
CBO说明(第二部分)
1.
在两张表连接,且内表的目标列上建有索引时,只有Nested Loop才能有效地利用到该索引。SMJ即使相关列上建有索引,最多只能因索引的存在, 避免数据排序过程。HJ由于须做HASH运算,索引的存在对数据查询速度几乎没有影响。
2.
对数据经常有增、删、改的表最好定期对表和索引进行分析,可用SQL语句 “analyze table xxx compute statistics for all indexes;"
ORACLE掌握了充分反映实际的统计数据,才有可能做出正确的选择。
3.
例如:
1)
虽然emp数据行有很多,ORACLE缺省认定表中列的值是在所有数据行均匀分布的,也就是说每种 deptno值各有25万数据行与之对应。
假设SQL搜索条件DEPTNO=10,利用deptno列上的索引进行数据搜索效率,往往不比全表扫 描的高,ORACLE理所当然对索引“视而不见”,认为该索引的选择性不高。
2)
采用对该索引列进行单独分析,或用analyze语句对该列建立直方图,对该列搜集足够的统计数据,使ORACLE在搜索选择性较高的值能用上索引。或是在查询值等于20、30、40的SQL中加入索引提示
4.
CBO根据由收集到的统计信息而导出的成本,来确定连接顺序(Join Order)。如果没有统计信息,CBO就将以表在FROM子句中从左到右的顺序为驱动顺序(Driving Order),正好和RBO相反。
1)
2)
from:http://blog.sina.com.cn/s/blog_7930c09d0100yb89.html
- Oracle CBO知识点
- 优化器CBO知识点
- oracle CBO 优化
- Oracle RBO、CBO简介
- Oracle RBO、CBO简介
- oracle cbo rbo
- Oracle CBO 与 RBO
- Oracle Optimizer CBO RBO
- Oracle CBO 与 RBO
- Oracle RBO、CBO简介
- Oracle Optimizer CBO RBO
- oracle cbo rbo 详解
- Oracle Optimizer CBO RBO
- Oracle CBO 与 RBO
- Oracle Optimizer CBO RBO
- Oracle CBO 与 RBO
- Oracle CBO RBO
- Oracle CBO 与 RBO
- 【IOS】蓝牙通信示例
- SQL Server 拆分字符串方法详解
- 在JSP页面中获取当前日期时间
- Chrome 插件(Shockwave Flash)未响应 错误解决办法
- postfix搭建纯邮件转发服务器
- Oracle CBO知识点
- sqlite returned: error code = 14, msg = cannot open file at source line 25502
- oracle分析函数row_number() over()使用
- 程序员找工作需要看的书
- oracle sql语句执行顺序
- UISegmentedControl
- Android操作HTTP实现与服务器通信
- Delphi 操作剪贴板(1)
- C++ 存储类型