1 / 44
文档名称:

《sql优化经验总结》.ppt

格式:ppt   大小:184KB   页数:44页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《sql优化经验总结》.ppt

上传人:相惜 2022/5/28 文件大小:184 KB

下载得到文件列表

《sql优化经验总结》.ppt

相关文档

文档介绍

文档介绍:ORACLE SQL优化经验交流 系统支撑部 董建忠
1
精选课件
第一章:概述
什么样的SQL需要优化
常见的问题
发现问题的方法
2
精选课件
什么样的SQL需要优化
引发搜索还是利用索引或是其他的方式。
运行“执行计划”
12
精选课件
ORACLE 的优化器
ORACLE 有两种优化器:基于规则的优化器( RBO , Rule Based Optimizer ),和基于代价的优化器( CBO , Cost Based Optimizer )
ORACLE V7以来缺省的设置应是“choose”,即如果对已分析的表查询的话选择CBO,否则选择RBO。如果该参数设为“rule”,则不论表是否分析过,一概选用RBO,除非在语句中用hint强制
各“执行计划”的 cost 的计算根据,依赖于数据表中数据的统计分布 ,须要分析表和相关的索引,才能搜集到 CBO 所需的数据
13
精选课件
在SQLPLUS 配置AUTOTRACE
AUTOTRACE 参数
解 释
SET AUTOTRACE OFF
不能获得AUTOTRACE报告. 这是默认的.
SET AUTOTRACE ON EXPLAIN
仅仅显示优化器执行计划的AUTOTRACE报告
SET AUTOTRACE ON STATISTICS
仅仅显示SQL语句执行的统计结果的AUTOTRACE报告
SET AUTOTRACE ON
包括上面两项内容的AUTOTRACE报告
SET AUTOTRACE TRACEONLY
与SET AUTOTRACE ON类似,所有的统计和数据都在,但不可以打印
14
精选课件
安装AUTOTRACE环境
用户必须被赋予PLUSTRACE角色,而PLUSTRACE角色需要DBA来赋予。另外,该用户必须创建PLAN_TABLE表
1、 首先创建PLUSTRACE角色并且赋给DBA:
CONNECT sys/sys’s password AS SYSDBA
@$ORACLE_HOME/sqlplus/admin/
2、 赋权限给用户
CONNECT / AS SYSDBA
GRANT PLUSTRACE TO USER(预赋权的用户名);
这样,就可以在该用户下设置AUTOTRACE报告的显示与否了。
15
精选课件
使用QUEST TOAD 查看执行计划
安装QUEST TOAD软件
建立数据库连接
进入SQL语句执行窗口
输入并选定SQL语句
在’SQL-WINDOW’菜单中选‘EXPLAIN PLAN CURRENT SQL’, 即可看到执行计划,
并不真正执行语句,不需要等待结果
16
精选课件
查看执行计划
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (FULL) OF 'TEST'
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
4 consistent gets
0 physical reads
0 redo size
547 bytes sent via SQL*Net to client
655 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
4 rows processed
17
精选课件
第四章:如何分析问题的原因
查找原因的一般步骤
18
精选课件
查找原因的步骤(一)
检查被索引的列或组合索引的首列是否出现在PL/SQL语句的WHERE子句
看采用了哪种类型的连接方式。ORACLE的共有Sort Merge Join(归并 SMJ)、Hash Join(散列HJ)和Nested Loop Join(嵌套循环 NL)。在两张表连接,且内表的目标列上建有索引时,只有Nested Loop才能有效地利用到该索引。SMJ即使相关列上建有索引,最多只能因索引的存在,避免数据排序过程。HJ由于须做HASH运算,索引的存在对数据查询速度几乎没有影响