如何用SQLTuningAdvisor(STA)优化SQL语句

本文介绍了如何在Oracle 10g中使用SQL Tuning Advisor (STA) 来优化SQL语句。通过创建、执行和分析优化任务,展示了一条复杂查询的优化过程,包括创建索引的建议,以提高查询性能。
摘要由CSDN通过智能技术生成

原 如何用 SQL Tuning Advisor (STA) 优化SQL语句https://blog.csdn.net/tianlesoftware/article/details/5630888版权声明: https://blog.csdn.net/tianlesoftware/article/details/5630888
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等。在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包。使用STA一定要保证优化器是CBO模式下。
执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限:
SQL> create user dave identified by dave;
用户已创建。
SQL> grant connect,resource to dave;
授权成功。
SQL> grant advisor to dave;
授权成功。
下面简单介绍一下如何优化一条找到的问题语句。
create table bigtab as select rownum as "id",a.* from sys.all_objects a;
create table smalltab as select rownum as "id", a.* FROM sys.all_tables a;
然后多运行几次下面的脚本,增加表里的数据:
insert into bigtab select rownum as "id",a.* from sys.all_objects a;
insert into smalltab  select rownum as "id", a.* FROM sys.all_tables a;
这里创建一张大表和一张小表,并且都没有索引,下面执行一个查询:
SQL> set timing on
SQL> set autot on
SQL> select count(*) from bigtab a, smalltab b where a.object_name=b.table_name;
  COUNT(*)
----------
   2141537
已用时间:  00: 00: 20.05
执行计划
----------------------------------------------------------
Plan hash value: 3089226980
--------------------------------------------------------------------------------
| Id  | Operation           | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |          |     1 |    45 |  3146   (1)| 00:00:38 |
|   1 |  SORT AGGREGATE     |          |     1 |    45 |            |          |
|*  2 |   HASH JOIN         |          |   447K|    19M|  3146   (1)| 00:00:38 |
|   3 |    TABLE ACCESS FULL| SMALLTAB | 27327 |   533K|   264   (1)| 00:00:04 |
|   4 |    TABLE ACCESS FULL| BIGTAB   |   712K|    16M|  2878   (1)| 00:00:35 |
-----------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值