Oracle中CBO优化器简介
Oracle中CBO优化器简介
Oracle数据库中的优化器是SQL分析和执行的优化工具。它负责制定SQL的执行计划,也就是它负责保证SQL的执行计划的效率最高,比如优化器决定Oracle以什么样的方式访问数据,优化器是SQL执行的核心,它作出的执行计划的好坏,直接影响着SQL的执行效率。
1、执行计划中数据的访问方式:
直接表(无索引)的访问:并行
多数据块
通过索引访问:index unique scan(=唯一值)
Index range scan(<,>范围)
Index full scan(order by, <>)
2、执行计划中数据的关联处理:
Nested loop join:嵌套循环
Merge join:先将表排序
Hash join:hash定位
CBO优化器有两者可以选择的运行模式:
First_rows(n)
All_rows
3、First_rows(n)模式
当设置为first_rows(n)模式时,Oracle在执行SQL时,会优选考虑将结果集的前N条记录以最快的速度反馈回来,而其他的结果并不需要同时返回。这种设置常用于一些电子商务网站或者BBS论坛的分页处理。
需要注意的是order 不要的字段必须创建索引。否则Oracle会忽略first_rows而选择使用all_rows。
4、All_rows模式
当设置为all_rows()模式时,Oracle会以最快的速度将全部的SQL执行完毕,并将所有的结果集反馈回来。All_rows模式在OLAP系统中用的比较多,all_rows强调SQL整体的执行效率,而first_rows(n)强调以最快的速度返回前n行,而不管所有结果返回的时长,可能最后一条记录要很长时间之后才能获得。
Oracle中CBO优化器简介的更多相关文章
- Oracle SQL优化器简介
目录 一.Oracle的优化器 1.1 优化器简介 1.2 SQL执行过程 二.优化器优化方式 2.1 优化器的优化方式 2.2 基于规则的优化器 2.3 基于成本的优化器 三.优化器优化模式 3.1 ...
- oracle里的优化器
1.1 oracle里的优化器 RBO(Rule-Based-Optinizer):基于规则的优化器 CBO(Cost-Based-Optinizer): 基于成本的优化器 SQL语句执行过程 待执行 ...
- Oracle性能优化之 Oracle里的优化器
优化器(optimizer)是oracle数据库内置的一个核心子系统.优化器的目的是按照一定的判断原则来得到它认为的目标SQL在当前的情形下的最高效的执行路径,也就是为了得到目标SQL的最佳执行计划. ...
- CBO优化器实用理解
对于CBO的理解: RBO-----基于规则的优化器 CBO-----基于代价的优化器 CBO计算执行计划的代价(cost),并从中选择cost最低的执行方案,它依赖数据库对象的统计信息,统计信息的及 ...
- 分享:SQL优化器简介
SQL优化是我们经常会遇到的问题,无论你是专职的数据分析人员还是全栈开发大神或者是CURD搬运工. 我们在工作中经常会听到这样的声音:“查询慢?加个索引吧”.虽然加索引并不一定能解决问题,但是这体现了 ...
- SQL优化器简介
文章导读: 什么是RBO? 什么是CBO? 我们在工作中经常会听到这样的声音:"SQL查询慢?你给数据库加个索引啊".虽然加索引并不一定能解决问题,但是这初步的体现了SQL优化的思 ...
- 【Oracle】CBO优化详解
SQL优化是数据优化的重要方面,本文将分析Oracle自身的CBO优化,即基于成本的优化方法.Oracle为了自动的优化sql语句需要各种统计数据作为优化基础.外面会通过sql的追踪来分析sql的执行 ...
- oracle中sql优化
问题描述:刚开始做项目的时候没啥感觉,只用能出来结果,sql随便写,但是后来用户的数据量达到几万条是,在访问系统,发现很多功能加载都很慢,有的页面一个简单的关联 查询居然要花费30多秒,实在是不能忍, ...
- Tensorflow 中的优化器解析
Tensorflow:1.6.0 优化器(reference:https://blog.csdn.net/weixin_40170902/article/details/80092628) I: t ...
随机推荐
- CODEVS1358【DFS/状压DP】
题目链接[http://codevs.cn/problem/1358/] 题意:这个游戏在一个有10*10个格子的棋盘上进行,初始时棋子位于左上角,终点为右下角,棋盘上每个格子内有一个0到9的数字,每 ...
- 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)
4148: [AMPPZ2014]Pillars Time Limit: 5 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 100 Solve ...
- SpringMvc配置详解
在此做一个对Mvc的复习,便于以后快速复习mvc配置. 开发环境 : IDe :iDEA JDK:1.8 使用的框架技术:Mybtais ,Spring,Spring MVC 数据源选用Dbcp 首先 ...
- 腾讯通消息webSDK踩坑
1.腾讯通提供一个通过http协议的接口,可用于发送消息,公告等功能,要使用其功能首先要开启RTX_HTTPServer服务. 2.阅读文档http://rtx.tencent.com/sdk/,为了 ...
- 《深入理解Spark-核心思想与源码分析》(五)第五章任务提交与执行
即欲捭之贵周,即欲阖之贵密.周密之贵,微而与道相随.---<鬼谷子> 解释:译文:如果要分析问题,关键在于周详,如果要综合归纳问题,关键在于严密.周详严密的关键在于精深而与道相随. 解词: ...
- MongoDB基础学习(一) MongoDB概念解析
.基础概念 SQL术语/概念 MongoDB术语/概念 说明 database database 数据库 table collection 数据表/集合 row document 数据记录行/文档 c ...
- JLink Support for the Nuvoton NUC1xx devices
http://forum.segger.com/index.php?page=Thread&threadID=1441 Friday, April 19th 2013, 7:25pm Hi M ...
- [置顶] linux学习之静态库和动态库的制作与使用
linux中静态库和动态库的制作与使用 一.静态链接库 1.首先编写模块程序example.c.example.h 2.使用gcc -c example.c -o example.o编译example ...
- centos的linux内核源码下载方法
http://vault.centos.org/ http://blog.csdn.net/xiongzhizhu/article/details/51816243
- Upgrading Directly from MySQL 5.0 to 5.7 using an ‘In Place’ Upgrade
http://mysqlserverteam.com/upgrading-directly-from-mysql-5-0-to-5-7-using-an-in-place-upgrade/