优化SQL

SQL开发人员从源代码中发现一条跑得很慢的SQL, 如何优化?

DBA从AWR报告中发现一条跑得很慢的SQL,没有源代码或者不想修改源代码怎么办?

SQL自动优化工具SQL Tuning Expert Pro for Oracle

下载: https://www.tosska.cn/tosska-sql-tuning-expert-pro-tse-pro-for-oracle-download-free-trial-zh/

产品介绍: https://www.tosska.cn/tosska-sql-tuning-expert-pro-tse-pro-for-oracle-zh/

执行计划

具体介绍之前,我们先要了解什么是执行计划。

执行计划是数据库系统根据SQL源码和相关对象的统计资料产生的查询方案。在数据库服务器硬件环境和网络确定的情况下,SQL的执行计划决定了SQL的性能。

 

最佳实践

1. 打开软件Tosska SQL Tuning Expert Pro for Oracle;

2. 连接数据库;

3. 点击 “优化SQL” 右边的+号,创建一个会话;

4. 在SQL编辑器中,输入需要优化的SQL

5. 点击“自动优化SQL”按钮, 选择测试运行的方式,点击”确认“按钮之后,开始产生大量的等价SQL并自动测试运行;

6. 工具产生了205条等价SQL,我们可以看到目前最优的SQL是 SQL 116, SQL执行时间从6.07秒提升到0.06秒。

我对这个优化结果非常满意了,于是点击“停止” 停止优化。

原来的SQL执行时间:        6.07 秒

最优的等价SQL执行时间: 0.06 秒

7. 如果您是SQL开发人员,选中最快的 SQL 116, 复制 SQL文本,粘贴到源代码中替换原始SQL,然后编译程序,调优就完成了。

如果您是运维DBA,没有源代码或者不想修改源代码,忽略本步骤,执行步骤8, 9, 10, 11;

8. 选中最优的SQL 116, 点击 部署 SQL Patch, 用最优的等价SQL的执行计划调整原始SQL的执行计划

9. 在部署SQL Patch 窗口中,点击部署按钮;

10. 关闭“部署SQL Patch”窗口之后,原始SQL的执行计划已经发生变化,SQL Tuning Expert 提醒我们测试运行原始SQL来确认调优效果。

选中原始SQL, 点击“测试运行当前SQL”

11. 神奇的事情出现了。我们没有改变原始SQL,但是原始SQL的执行时间由原来的 6.07秒变成了现在的0秒。

结论:

  • 对于SQL开发人员来说,优化SQL后,用最优的等价SQL替换原始SQL;
  • 对于运维DBA来说,在不修改SQL源代码的情况下,为原始SQL部署了最优的执行计划,成功优化了SQL的性能。

SQL优化神器 - Tosska SQL Tuning Expert for Oracle

SQL优化系列(二)- 优化Top SQL

SQL优化系列(三)- 用最少的索引获得最大的性能提升

SQL优化系列(一)- 优化SQL的更多相关文章

  1. Spark SQL概念学习系列之Spark SQL 优化策略(五)

    查询优化是传统数据库中最为重要的一环,这项技术在传统数据库中已经很成熟.除了查询优化, Spark SQL 在存储上也进行了优化,从以下几点查看 Spark SQL 的一些优化策略. (1)内存列式存 ...

  2. 性能优化系列七:SQL优化

    一.SQL在数据库中的执行过程 二.执行计划 1. ACID 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节.事务在执行过程中发生错误,会 ...

  3. Spark SQL概念学习系列之Spark SQL概述

    很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...

  4. Spark SQL概念学习系列之分布式SQL引擎

    不多说,直接上干货! parkSQL作为分布式查询引擎:两种方式 除了在Spark程序里使用Spark SQL,我们也可以把Spark SQL当作一个分布式查询引擎来使用,有以下两种使用方式: 1.T ...

  5. Spark SQL概念学习系列之Spark SQL的简介(一)

    Spark SQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQL on Spark. 之前,Shark的查询编译和优化器依赖于Hive,使得Shark不得不 ...

  6. Spark SQL概念学习系列之Spark SQL 架构分析(四)

    Spark SQL 与传统 DBMS 的查询优化器 + 执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用的 Spark 作为执行引擎. Spark SQL 的查询优化是Catalyst ...

  7. Spark SQL概念学习系列之Spark SQL入门

    前言 第1章   为什么Spark SQL? 第2章  Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章  测试环境之搭建 第6章 ...

  8. Spark SQL概念学习系列之Spark SQL入门(八)

    前言 第1章   为什么Spark SQL? 第2章  Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章  测试环境之搭建 第6章 ...

  9. Spark SQL概念学习系列之Spark SQL基本原理

    Spark SQL基本原理 1.Spark SQL模块划分 2.Spark SQL架构--catalyst设计图 3.Spark SQL运行架构 4.Hive兼容性 1.Spark SQL模块划分 S ...

  10. Sql Server系列:Microsoft SQL Server Management Studio模板资源管理器

    模板资源管理器是Microsoft SQL Server Management Studio的一个组件,可以用来SQL代码模板,使用模板提供的代码,省去每次都要输入基本代码的工作. 使用模板资源管理器 ...

随机推荐

  1. 从0开始学习ssh之资源分类

    更目录下面,新建config用于放配置文件,新建test用于放置测试文件.src目录用于放置源代码.由于ssh是三层,因此新建三层包(dao,service,view).其中dao和service还有 ...

  2. 软件-浏览器-GoogleChrome:Google Chrome

    ylbtech-软件-浏览器-GoogleChrome:Google Chrome Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit, ...

  3. jeecms v9导入myeclipse 2015 ehcache.xml报错问题

    1.找不到ehcache.xml文件问题 cache-context.xml <property name="configLocation"> <value> ...

  4. PAT甲级——A1056 Mice and Rice

    Mice and Rice is the name of a programming contest in which each programmer must write a piece of co ...

  5. Python - 基本数据类型及其常用的方法之列表

    列表: 特点:用 [] 括起来,切元素用逗号分隔:列表内的元素可以为任何的数据类型. 列表的基本操作: 1.修改 li = [12, 5, 6, ["Aiden", [2, 4], ...

  6. [转]C#改变无边框窗体大小

    #region 改变窗体大小 const int WM_NCHITTEST = 0x0084; ; //左边界 ; //右边界 ; //上边界 ; //左上角 ; //右上角 ; //下边界 cons ...

  7. CImage 是基于GDI+的,很老的一篇文章,我很久很久以前看到过的

    在许多资料上都说CImage类是基于GDI+的,但是为什么是基于GDI+的呢? 因为使用这个类时,并没有加入#include <gdiplus.h> ,也没有在程序开始和结束时分别写GDI ...

  8. python \r \t \n 各种转义字符

    转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \’ 单引号 \” 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 \n 换行 \v 纵向制表符 \t 横向制 ...

  9. 【html、CSS、javascript-6】JavaScript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 参考功能网站: ht ...

  10. Faster RCNN 的细节补充

    一.faster rcnn的结构 通过上面的结构,我们知道该faster rcnn前面以VGG16为框架,加入RPN层,最后做分类层. 采用VGG16相对ZF来说慢一点,但是精度也高一点. 二.RPN ...