如果面对一个需要优化的SQL语句,没有很好的想法,可以先试试Oracle的SQL Tuning Advisor。

SQL> select * from v$version;BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
--创建测试表
SQL> create table test_sql_tuning(id_ number);Table created.SQL> declare2  begin3    for i in 1..100000 loop4      insert into test_sql_tuning values(i)5    end loop;6    commit;7  end;8  /PL/SQL procedure successfully completed.SQL> set autotrace on exp
SQL> select * from test_sql_tuning t where t.id_=333;ID_
----------333Execution Plan
----------------------------------------------------------
Plan hash value: 3855182387-------------------------------------------------------------------------------------
| Id  | Operation         | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                 |     3 |    39 |    69   (2)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| TEST_SQL_TUNING |     3 |    39 |    69   (2)| 00:00:01 |
-------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------1 - filter("T"."ID_"=333)Note
------ dynamic sampling used for this statement (level=2)SQL> declare2  my_task_name varchar2(50);3  begin4    my_task_name := dbms_sqltune.create_tuning_task(5    SQL_ID => 'g72kdvcacxvtf',6    scope => 'COMPREHENSIVE',7    task_name => 'ZEN_TEST_SQLTUNE');8    DBMS_SQLTUNE.execute_tuning_task(my_task_name);9  end;10  /PL/SQL procedure successfully completed.SQL> select dbms_sqltune.report_tuning_task('ZEN_TEST_SQLTUNE') from dual;DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name   : ZEN_TEST_SQLTUNE
Tuning Task Owner  : HR
Workload Type      : Single SQL Statement
Scope              : COMPREHENSIVE
Time Limit(seconds): 1800
Completion Status  : COMPLETED
Started at         : 07/02/2017 16:31:20
Completed at       : 07/02/2017 16:31:20DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Schema Name: HR
SQL ID     : cnvs1fb15pqb4
SQL Text   : select * from test_sql_tuning t where t.id_=333-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------1- Statistics Finding
---------------------

DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------Table "HR"."TEST_SQL_TUNING" was not analyzed.Recommendation--------------- Consider collecting optimizer statistics for this table.execute dbms_stats.gather_table_stats(ownname => 'HR', tabname =>'TEST_SQL_TUNING', estimate_percent =>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZEAUTO');RationaleDBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
-----------------------------------------------------------------------------------------The optimizer requires up-to-date statistics for the table in order toselect a good execution plan.2- Index Finding (see explain plans section below)
--------------------------------------------------The execution plan of this statement can be improved by creating one or moreindices.Recommendation (estimated benefit: 98.55%)------------------------------------------

DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------- Consider running the Access Advisor to improve the physical schema designor creating the recommended index.create index HR.IDX$$_06650001 on HR.TEST_SQL_TUNING("ID_");Rationale---------Creating the recommended indices significantly improves the execution planof this statement. However, it might be preferable to run "Access Advisor"using a representative SQL workload as opposed to a single statement. Thiswill allow to get comprehensive index recommendations which takes intoaccount index maintenance overhead and additional space consumption.DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
---------------------------------------------------------------------------------------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------1- Original
-----------
Plan hash value: 3855182387-------------------------------------------------------------------------------------
| Id  | Operation         | Name            | Rows  | Bytes | Cost (%CPU)| Time     |DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                 |     3 |    39 |    69   (2)| 00:00:01 ||*  1 |  TABLE ACCESS FULL| TEST_SQL_TUNING |     3 |    39 |    69   (2)| 00:00:01 |
-------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------1 - filter("T"."ID_"=333)DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------
2- Using New Indices
--------------------
Plan hash value: 1603088386-----------------------------------------------------------------------------------
| Id  | Operation        | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT |                |     1 |    13 |     1   (0)| 00:00:01 |
|*  1 |  INDEX RANGE SCAN| IDX$$_06650001 |     1 |    13 |     1   (0)| 00:00:01
|
-----------------------------------------------------------------------------------

DBMS_SQLTUNE.REPORT_TUNING_TASK('ZEN_TEST_SQLTUNE')
--------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------1 - access("T"."ID_"=333)-------------------------------------------------------------------------------1 row selected.Execution Plan
----------------------------------------------------------
Plan hash value: 1388734953-----------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Cost (%CPU)| Time     |
-----------------------------------------------------------------
|   0 | SELECT STATEMENT |      |     1 |     2   (0)| 00:00:01 |
|   1 |  FAST DUAL       |      |     1 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------

SQL>

上面的report总共分为3个部分,
分别是SQL调优的基本信息、SQL调优的建议findings、以及SQL对应的执行计划部分
在基本信息部分包含了SQL调优的任务名称,状态,执行,完成时间,对应的SQL完整语句等
在finding部分则给出本次调优所得到的成果,如本次是提示缺少统计信息,可以及创建索引。
在执行计划部分则给出了当前SQL语句的执行计划以及谓词信息

转载于:https://www.cnblogs.com/Alex-Zeng/p/7106491.html

Oracle SQL Tuning Advisor 测试相关推荐

  1. ORACLE SQL Tuning Advisor

    前言:一直以来SQL调优都是DBA比较费力的技术活,而且很多DBA如果没有从事过开发的工作,那么调优更是一项头疼的工作,即使是SQL调优很厉害的高手,在SQL调优的过程中也要不停的分析执行计划.加HI ...

  2. [原创]ORACLE SQL TUNING ADVISOR 使用方法

    sql tunning advisor 使用的主要步骤: 1 建立tunning task 2 执行task 3 显示tunning 结果 4 根据建议来运行相应的调优方法   下面来按照这个顺序来实 ...

  3. [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)

    https://www.cnblogs.com/kkterry/p/4253265.html 前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富 ...

  4. oracle advisor权限,Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor )

    在Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法.将一条或多条SQL语句做为输入内容 在Oracle数据库出现性能问题时,使用Oracle本身的工具 ...

  5. oracle sqladvisor,Oracle 11 sql tuning advisor sql access advisor关闭以及job查看与停止

    Oracle11g自动维护任务 参考博客:http://blog.itpub.net/12798004/viewspace-1247636/ # 自动收集优化器统计信息 收集数据库所有schema没有 ...

  6. oracle权限advisor,Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)

    如何有效的诊断和监控高负载的SQL对于DBA来说并非是件容易的事情,对SQL语句手工调优需要很多的经验和技巧, 结合个人经验常见如下问题: . 对SQL语句本身进行优化以便获得更优的执行计划; . 合 ...

  7. Oracle SQL Access Advisor 说明

    一.说明 1.1 相关内容 在如下官方文档中提到了一些优化工具的说明: Monitoring and Tuning the Database http://docs.oracle.com/cd/E11 ...

  8. SQL Tuning Advisor简单使用

    SQL Tuning Advision是Oracle提供的一个功能包,可以针对有性能问题的SQL给出优化建议.可以作为调优的辅助手段. 建立测试表和索引 create table t_1 as sel ...

  9. SQL Tuning Advisor使用实例

    在oracle10g之前,想要优化一个sql语句是比较麻烦,但是在oracle10g这个版本推出的SQL Tuning Advisor这个工具,能大大减少sql调优的工作量,不过要想使用SQL Tun ...

最新文章

  1. 一个复杂系统的拆分改造,压力真大!
  2. 高等数学:第二章 导数与微分(2)初等函数 高级导数 隐函数 参数函数
  3. 【数据清洗】yolo标注补全 生成空的标注txt文件
  4. vmware14/15 安装Ubuntu12.04 图文八步法
  5. 川农在线计算机考试,四川农业大学《计算机应用基础(专科)》20年6月作业考核-答案...
  6. HarmonyOS之深入解析Ability的功能和使用
  7. 基础补充和加强——希望对后来的人有所帮助
  8. Dockerfile详解(二)
  9. ES6——函数参数默认值
  10. Python_爬虫笔记_2018.3.19
  11. mybatis中的一级和二级缓存,执行顺序,cache属性的应用
  12. 【HDU4691】Front compression(求给定两个子串/后缀的最长公共前缀---后缀数组+st表+一点思维)
  13. PHP生成TXT文件并自动下载
  14. vue.js快速入门 1
  15. 【SQL Server】bak文件和mdf文件辨析
  16. 【OR】YALMIP 鲁棒优化
  17. matlab模糊闭包,基于matlab的模糊聚类分析
  18. ZEMAX | 绘图分辨率结果对光线追迹的影响
  19. 医学图像笔记(一)dicom数据格式
  20. 【AI绘图】来体验了下AI绘图

热门文章

  1. 十大算法,描述+代码+演示+分析+改进(赶紧收藏!)
  2. 2022-2028年中国电压力锅市场投资分析及前景预测报告
  3. Python多线程(3)——Queue模块
  4. 自动驾驶传感器比较:激光雷达(LiDAR) vs. 雷达(RADAR)
  5. NVIDIA GPU上的直接线性求解器
  6. TinyML设备设计的Arm内核
  7. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
  8. Glide的缓存机制
  9. 2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach
  10. 【hexo】搭建个人bolg日志 day1