原 如何用 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 |
-----------------------------------------------------------------------
如何用SQLTuningAdvisor(STA)优化SQL语句
最新推荐文章于 2021-04-08 21:12:26 发布
本文介绍了如何在Oracle 10g中使用SQL Tuning Advisor (STA) 来优化SQL语句。通过创建、执行和分析优化任务,展示了一条复杂查询的优化过程,包括创建索引的建议,以提高查询性能。
摘要由CSDN通过智能技术生成