文档详情

PLSQL程序性能分析及优化.doc

发布:2017-09-08约1.58万字共28页下载文档
文本预览下载声明
PLSQL程序 性能分析及优化 巨龙软件工程公司 (总工办) 文件编号: TD 文档编号 版本号 0.1 文档名称 第 册/共 册 总页数 28 正文 24 附录 编制 赵欣 审批 生效日期 巨龙软件工程公司 版本号 更改条款及内容 更改人 审批人 更改日期 0.1             1. 前言 5 1.1 目的 5 1.2 文档说明 5 1.3 词汇表 5 1.4 参考资料 5 2. 程序性能分析方法 6 2.1 Expain Plan 6 3. PLSQL优化的核心思想 8 3.1 导致性能问题的内在原因 8 3.2 PLSQL优化的核心思想 8 4. 程序书写规范及优化原则 9 4.1 书写方面 9 4.1.1 SQL语句要统一成大写 9 4.1.2 涉及到多表检索时,明确地为每个字段指定表名 9 4.1.3 SELECT子句中避免使用’*’ 10 4.2 条件语句 10 4.2.1 在进行多个表连接时,FROM中的表的顺序要按照记录数由多到少的顺序来排列 10 4.2.2 可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾 11 4.2.3 WHERE子句中的连接顺序 12 4.2.4 不要通过LIKE运算来执行中间一致或后方一致的检索 12 4.2.5 用EXISTS替代IN 12 4.2.6 用NOT EXISTS替代NOT IN 13 4.2.7 用表连接替换EXISTS 14 4.2.8 用EXISTS替换DISTINCT 14 4.2.9 用Where子句替换HAVING子句 15 4.2.10 对于经常使用的SQL语句(循环处理中使用的SQL等),可以通过预编译、绑定变量来提高性能 15 4.3 索引的使用 16 4.3.1 对于索引列不要执行NULL值的检索 16 4.3.2 对于索引列,不要使用NOT、!=、比较运算 16 4.3.3 用=替代 17 4.3.4 对于索引列不要使用函数和计算式 17 4.3.5 对于多键值索引,要按照索引的定义顺序来使用 17 4.3.6 避免改变索引列的类型 18 4.3.7 多个平等的索引 18 4.3.1 不明确的索引等级 19 4.3.2 自动选择索引 19 4.3.3 使用提示(Hints) 19 4.3.1 表上存在过旧的分析 20 4.3.1 表上存在并行 20 4.3.1 关于索引建立 20 4.3.2 当有多个索引可供选择时,使用的是DB设计者所希望的索引 20 4.4 存储函数 21 4.4.1 对于经常使用的SQL语句(循环处理中使用的SQL等),可以通过预编译、绑定变量来提高性能 21 4.5 分组和排序的使用 21 4.5.1 去掉没有意义的GROUP BY、ORDER BY子语 21 4.5.2 group by优化 22 4.5.3 尽量避免用order by 22 4.6 优化 22 4.6.1 减少对表的查询 22 4.6.2 避免循环(游标)里面嵌查询 24 4.6.3 尽量用union all替换union 25 4.6.4 使用DECODE函数来减少处理时间 25 4.6.5 避免全表扫描的查询方式 26 4.6.6 删除重复记录 26 4.6.7 COMMIT使用 26 4.6.8 批量数据插入 27 4.6.9 如果DBMS能够产生执行计划,验证一下是否是最优的SQL 28 前言 目的 开发过程中,经常会使用PL/SQL Developer工具进行数据转换和处理业务数据。通过性能优化来提高程序执行效率是必须掌握的一份技能。性能问题中绝大部分都是由于程序编写的不合理、不规范造成的。本文档阐述了程序中常见的不优化的脚本编写,导致的性能问题。 期望通过阅读该文档,能够使大家有所收获。 文档说明 本文档只涉及PLSQL编写的书写规范和优化问题,不包括ORACLE本身的性能优化(内存SGA、系统参数、表空间等)、操作系统的性能问题和硬件的性能问题。对于PLSQL程序优化方面的内容有很多,本文档列出在我们实际工作中一些常见的情况。文档中难免有不正确的地方,请给予指正、完善。 举例说明中的语句采用的社保核心平台的数据字典,没有标明表名和字段名的含义。以下文档中用红色加粗表明之处属于大部分情况下正确,但是存在特例情况,因此在日常使用情况下已给与关注。 词汇表 词汇名称 词汇含义 备注 重要度 Sql语句书写规范的执行程度。 1、必须2、可选
显示全部
相似文档