SQL优化常用方法24
- 用EXPLAIN PLAN 分析SQL语句
EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的,最内部的操作将被最先解读, 如果两个操作处于同一层中,带有最小操作号的将被首先执行.NESTED LOOP是少数不按照上述规则处理的操作, 正确的执行路径是检查对NESTED LOOP提供数据的操作,其中操作号最小的将被最先处理.
译者按: 通过实践, 感到还是用SQLPLUS中的SET TRACE 功能比较方便.
举例:
SQL> list
1 SELECT *
2 FROM dept, emp
3* WHERE emp.deptno = dept.deptno
SQL> set autotrace traceonly /traceonly 可以不显示执行结果/
SQL> /
14 rows selected.
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 NESTED LOOPS
2 1 TABLE ACCESS (FULL) OF 'EMP'
3 1 TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
Statistics
0 recursive calls
2 db block gets
30 consistent gets
0 physical reads
0 redo size
2598 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
14 rows processed
通过以上分析,可以得出实际的执行步骤是:
- TABLE ACCESS (FULL) OF 'EMP'
- INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
- TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
- NESTED LOOPS (JOINING 1 AND 3)
注: 目前许多第三方的工具如TOAD和ORACLE本身提供的工具如OMS的SQL Analyze都提供了极其方便的
EXPLAIN PLAN工具.也许喜欢图形化界面的朋友们可以选用它们.
SQL优化常用方法24相关推荐
- SQL优化常用方法41
用UNION-ALL 替换UNION ( 如果有可能的话) 当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并, 然后在输出最终结果前进行排序. 如果用UN ...
- SQL优化常用方法31
强制索引失效 如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录 数量少) . 举例: SELECT ENAME FROM EMP WHERE EM ...
- SQL优化常用方法36
用UNION替换OR (适用于索引列) 通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意,以上规则只针对多个索引列有效. 如果有colu ...
- SQL优化常用方法49
优化GROUP BY 提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多.低效: SELECT JOB , AVG ...
- SQL优化常用方法10
删除重复记录 最高效的删除重复记录方法 ( 因为使用了ROWID) DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP ...
- SQL优化常用方法9
整合简单,无关联的数据库访问 如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) 例如: SELECT NAME FROM EMP WHERE EMP_NO = 1 ...
- SQL优化核心思想:或许你不知道的5条优化技巧
点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书. --异步小编 随着系统的数据量逐年增加,并发量也成倍增长,SQL性能越来越成为IT系统 ...
- mysql io次数_MySQL_揭秘SQL优化技巧 改善数据库性能,优化目标 1、减少 IO 次数 - phpStudy...
揭秘SQL优化技巧 改善数据库性能 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO ...
- MYSQL 优化常用方法
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能, 我们可以将表中字段的宽度设 ...
最新文章
- Struts2用户输入验证(6)
- 量子计算机神器,量子计算技术再获神器 科学家开发出新的成像技术
- [CVPR2016]Learning Deep Feature Representations with Domain Guided Dropout for Person Re-id
- linux源代码安装程序
- 常青:小程序音视频能力再升级
- 会议交流 | DataFunCon 线上大会 - 知识图谱专题论坛
- Covariance and Contravariance in C#, Part One
- python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
- AI人工智能在自动写歌词软件的最新应用,AI机器人小芝
- java爬取京东评价_无需编程的爬虫 - 爬取京东的评论
- c语言 算术平均滤波法_算术平均滤波C程序
- 使用Go语言解析多点触摸协议(MIT)TypeB由ADB调试产生的数据
- 万年历程序中十二生肖排列顺序及算法
- mybatis <where> <choose>标签
- 在SQL server 2008 R2进行数据查询操作时提示 “对象名无效”的问题
- 【前端技术】一篇文章搞掂:JS
- 新神魔大陆服务器维护,《新神魔大陆》手游8月20日合服维护公告
- Echarts地图版块移动位置的解决方案
- 词向量经典模型:从word2vec、glove、ELMo到BERT
- Echart实现中国地图和地图打点