SQL Tuning Advisor使用实例

在Oracle 10g之前,想要优化一个sql语句是比较麻烦,但是在Oracle 10g这个版本推出的SQL Tuning Advisor这个工具,能大大减少sql

在oracle 10g之前,想要优化一个sql语句是比较麻烦,但是在oracle 10g这个版本推出的sql tuning advisor这个工具,能大大减少sql调优的工作量,不过要想使用sql tuning advisor,一定要保证你的优化器是cbo模式。

1.首先需要创建一个用于调优的用户bamboo,并授予advisor给创建的用户

SQL> create user bamboo identified by bamboo;
User created.
SQL> grant connect,resource to bamboo;
Grant succeeded.
SQL> grant advisor to bamboo;
Grant succeeded.
 
2.创建用户做测试的2张表,大表里面插入500万条数据,小表里面插入10万条数据,其创建方法如下
SQL> create table bigtable (id number(10),name varchar2(100));
Table created.
 
SQL> begin
  2  for i in 1..5000000 loop
  3  insert into bigtable values(i,’test’||i);
  4  end loop;
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
SQL> commti;
 
SQL> create table smalltable (id number(10),name varchar2(100));
Table created.
 
SQL> begin
  2  for i in 1..100000 loop
  3  insert into smalltable values(i,’test’||i);
  4  end loop;
  5  end;
  6  /
 
PL/SQL procedure successfully completed.
 
SQL> commti;
 
3.然后对bigtable和smalltable做一个等连接查询,然后跟踪其执行计划
SQL> select a.id,a.name,b.id,b.name from bigtable a,smalltable b where a.id=b.id and a.id=40000;
 
        ID NAME                                            ID NAME
———- —————————————- ———- —————————————-
    40000 test40000                                    40000 test40000
 

Execution Plan
———————————————————-
Plan hash value: 1703851322
 
———————————————————————————
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time    |
———————————————————————————
|  0 | SELECT STATEMENT  |            |  839 |  106K|  3656  (5)| 00:00:44 |
|*  1 |  HASH JOIN        |            |  839 |  106K|  3656  (5)| 00:00:44 |
|*  2 |  TABLE ACCESS FULL| SMALLTABLE |    5 |  325 |    71  (3)| 00:00:01 |
|*  3 |  TABLE ACCESS FULL| BIGTABLE  |  173 | 11245 |  3584  (5)| 00:00:44 |
———————————————————————————
 
Predicate Information (identified by operation id):
—————————————————
 
  1 – access(“A”.”ID”=”B”.”ID”)
  2 – filter(“B”.”ID”=40000)
  3 – filter(“A”.”ID”=40000)
 
Note
—–
  – dynamic sampling used for this statement
 
Statistics
———————————————————-
          9  recursive calls
          0  db block gets
      16151  consistent gets
      11469  physical reads
          0  redo size
        588  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          1  rows processed
熟悉执行计划的就可以看出,这个sql执行是很慢的,,2个表都做的是全表扫描,并且其物理读是11469,按照优化的经验,给2个表的id创建索引,减少查询时候的物理读,下面我们就看看通过优化器,oracle能我们什么样的建议呢?

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1899015.html

(0)
上一篇 2025年2月22日 14:23:52
下一篇 2025年2月22日 14:24:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Navicat实用功能:数据备份与结构同步

    摘要 当我们要对数据库做有风险的操作时需要对数据库备份,每次上线项目时,线上与线下数据库结构总会有不一致的情况,本文将讲解如何利用Navicat来方便的解决这两个问题。 Navicat Navicat是一套快速、可靠的数据库管理工具,专为简…

    2025年2月23日 数据库
    100
  • sql文件怎么导入navicat

    打开Navicat for MySQL后点击新建链接,会呈现很多未打开的数据库,在任意一个数据库上右键点击,选择“新建数据库”。 会出现一个弹窗,输入数据库的名字,随便写一个,字符集选择GBK,排序规则可以不用选。 相关推荐:《Navica…

    2025年2月23日 数据库
    100
  • navicat怎么执行sql

    首先,使用Navicat for MySQL连接数据库并创建一个数据库。 接着点击查询,这里有两个查询,随便点击一个都可以。 既然是要执行SQL语句,所以我们要先新建一个查询窗体才得。 相关推荐:《Navicat for mysql使用图文…

    2025年2月23日 数据库
    100
  • navicat for mysql怎么导入sql

    Navicat for Mysql 是应用比较多的mysql的视图管理工具。下面为大家记录下Navicat for mysql如何导入sql文件。 推荐教程:MySQL入门视频教程 1、首先创建一个数据库(因为我导入的sql文件只有建表和插…

    2025年2月23日 数据库
    100
  • navicat表怎么执行sql语句

      很多小可爱可能都会使用Navicat for MySQL来操作电脑的MySQL数据库,今天小编我就来分享一下Navicat for MySQL怎样执行SQL语句。 推荐教程:MySQL入门视频教程 1、首先,打开navicat,选择要操…

    2025年2月23日 数据库
    100
  • navicat怎么用SQL语句创建视图

    navicat是一款非常好用的数据库管理软件,其功能非常强大。下面我们就为大家介绍一下,怎样在navicat中使用sql语句创建视图。 推荐教程:navicat图文教程 首先我们需要打开navicat。选择需要操作的数据库。点击查询,新建查…

    2025年2月23日
    100
  • navicat怎么导入sql

    Navicat for Mysql 是应用比较多的mysql的视图管理工具。下面记录下Navicat for mysql如何导入sql文件。 首先创建一个数据库(因为我导入的sql文件只有建表和插入数据的语句)。 在连接名处点击右键,新建数…

    2025年2月23日 数据库
    100
  • navicat怎么写sql

      sql是操作数据库中数据的语句,在不同的数据库中会略有不同。Navicat for MySQL是一款很方便的MySQL客户端工具,能够很好的提供操作数据库可视界面,在同类型的软件中,占有极高的市场份额。为了方便大家学会在Navicat写…

    2025年2月23日 数据库
    100
  • navicat怎么运行sql语句

      很多小可爱可能都会使用Navicat for MySQL来操作电脑的MySQL数据库,今天小编我就来分享一下Navicat for MySQL怎样执行SQL语句。 推荐教程:navicat图文教程 1、首先,使用Navicat for …

    2025年2月23日 数据库
    100
  • navicat和sql的区别

    navicat和sql的区别   Navicat是一套快速、可靠并价格相宜的数据库管理工具。而sql server是一个关系数据库管理系统。简单来说navicat是管理sql server数据库的可视化工具。 推荐教程:navicat使用图…

    2025年2月23日
    100

发表回复

登录后才能评论