Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间。要达到上述目的,我们通常只有如下三种方法可以选择:
1、降低目标SQL语句的资源消耗。
2、并行执行目标SQL语句。
3、平衡系统的资源消耗。
方法1:a、在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗。
b、不改写SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗。
注意:走索引不一定比全表扫描好,例如在很多情况下走索引的嵌套循环连接的执行效率往往比不上走全表扫描的哈希连接的执行效率。
方法2:实际上是以额外的资源消耗来换取执行时间的缩短,很多情况下使用并行是针对某些SQL的唯一优化手段。
方法3:可以避免不必要的资源争用所导致的目标SQL语句执行时间的增长。由于在目标SQL执行时系统处于高负荷状态,执行目标SQL所需的
硬件资源(CPU、内存、I/O等)得不到保障,存在争用的情况。在这种情况下,我们可以把一些与目标SQL同时执行的不重要但很消耗系统资源
的操作(如报表、批处理等)挪到系统不忙的时候执行。

Oracle数据库里做SQL优化的具体步骤:
1、找到执行时间最长、消耗系统资源最多的Top SQL语句。
2、查看上述Top SQL语句的执行计划,并结合器资源消耗情况和相关统计信息、trace文件来分析其执行计划是否合理。
3、通过修正措施(如:调整上述Top SQL的执行计划等)来对上述Top SQL做调整以缩短它们的执行时间,这里调整的指导原则就是前面介绍的
三种方法。

针对Top SQL的常用调整手段:
1、如果是统计信息不准或是因为CBO计算某些SQL的成本所用公式的先天不足而导致的SQL性能问题,我们可以通过重新收集统计信息,或者手工
修改统计信息,或者使用Hint来加以解决。
注释:对表收集统计信息的方式 exec dbms_stats.gather_table_stats(ownname=>'数据库用户名',tabname=>'表名',method_opt=>'for all
columns size 1',CASCADE=>true,estimate_percent=100);
2、如果是SQL语句的写法问题,我们可以通过在不更改业务逻辑的情况下改写SQL来解决问题。
3、如果是不必要的全表扫描/排序而导致的目标SQL的性能问题,我们可以通过建立合适的索引(包括函数索引、位图索引等)来加以解决。
4、如果是因为各种原因导致目标SQL的执行计划不稳定,我们可以通过使用Hint、SQL Profile或者SPM来解决问题。
5、如果是表或者索引的不良设计导致的目标SQL的性能问题,我们可以通过重新设计表/索引,重新组织表里的数据来解决问题。
6、如果上述调整措施都失效,我们可以考虑用并行来缩短目标SQL的执行时间。
7、如果上述调整措施(包括并行)都失效,我们还可以再联系实际业务的基础上更改目标SQL的执行逻辑,甚至不执行目标SQL,这是最彻底的
优化了。

对oracle中SQL优化的理解的更多相关文章

  1. oracle中sql优化

    问题描述:刚开始做项目的时候没啥感觉,只用能出来结果,sql随便写,但是后来用户的数据量达到几万条是,在访问系统,发现很多功能加载都很慢,有的页面一个简单的关联 查询居然要花费30多秒,实在是不能忍, ...

  2. oracle中sql语句的优化

    oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info   (30000条数据)D ...

  3. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)

    基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土O ...

  4. Oracle之SQL优化专题01-查看SQL执行计划的方法

    在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...

  5. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

  6. 从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)

    本文根据DBAplus社群第110期线上分享整理而成,文末还有好书送哦~ 讲师介绍 丁俊 新炬网络首席性能优化专家 SQL审核产品经理 DBAplus社群联合发起人.<剑破冰山-Oracle开发 ...

  7. Oracle之SQL优化专题03-如何看懂SQL的执行计划

    专题第一篇<Oracle之SQL优化专题01-查看SQL执行计划的方法>讲到了查看SQL执行计划的方法,并介绍了各种方法的应用场景,那么这一篇就主要介绍下如何看懂SQL的执行计划.毕竟如果 ...

  8. 读书笔记-《基于Oracle的SQL优化》-第一章-3

    优化器: 1.优化器的模式: 用于决定在Oracle中解析目标SQL时所用优化器的类型,以及决定当使用CBO时计算成本值的侧重点.这里的“侧重点”是指当使用CBO来计算目标SQL各条执行路径的成本值时 ...

  9. 基于oracle的sql优化

    [基于oracle的sql优化] 基于oracle的sql优化 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 一.编写初衷描述 在应有系统开发初期,由于数据库 ...

随机推荐

  1. r 随机数

    R软件一个显著的优点是它提供了丰富的随机数发生器,比SAS.Matlab方面很多,比Excel更不知方便到哪里去了.这无疑为统计学.工程学以及寿险精算学提供了很大的方便,比如我们要产生200个服从正态 ...

  2. 大数据基础篇----jvm的知识点归纳-5个区和垃圾回收机制

    一直对jvm看了又忘,忘了又看的.今天做一个笔记整理存放在这里. 我们先看一下JVM的内存模型图: 上面有5个区,这5个区干嘛用的呢? 我们想象一个场景: 我们有一个class文件,里面有很多的类的定 ...

  3. 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档

    日常工作中处理JPEG格式的图像文件时,有时需要转换成Word文档进行编辑,市场上应用而生了很多转换工具,相信不少人听说过OCR(光学字符识别)软件,可以用来转换图像文件,而在OCR软件中, ABBY ...

  4. bootstrap-select 多选下拉框使用教程

    http://silviomoreto.github.io/bootstrap-select/ 一.使用bootstrap-select组件时,先引用下列文件 最后一个文件 defaults-zh_C ...

  5. session一直报错Session store not set on request

    Route::group(['middleware' => ['web']], function () { //});仍然报错,看了 session是使用默认file,没问题:app/stora ...

  6. Eclipse的Project Facets属性

    Project Facets 1. 'Project Facets'可理解为:项目的特性,主流 IDE (Eclipse IDEA) 都提供了 facet 的配置.  'Project Facets' ...

  7. umi怎么去添加配置式路由

    今天在学习umi,他的路由机制非常的方便,但是在学到配置式路由的时候,看官方文档里面一笔带过: 对于我这种小萌新来说,有点懵,我需要把配置文件放到哪里呢?经过一番研究,发现它是放在根目录的.umirc ...

  8. OpenGL——二次曲面函数(球面-圆锥面-圆柱面)

    代码: #include<iostream> #include <math.h> #include<Windows.h> #include <GL/glut. ...

  9. 什么是IOC为什么要使用IOC

    概念: 作用: 结论:借助于“第三方”实现具有依赖关系的对象之间的解耦 在使用IOC之前的情况 如果有一个齿轮出了问题,就可能会影响到整个齿轮组的正常运 使用IOC之后 对象A获得依赖对象B的过程,由 ...

  10. TP5和TP3.2的区别

    1.控制器输出 return $this->fetch("index/hello"); $this->display 单字母函数去掉了 如:M() D() U() S( ...