wKiom1dUJTugNSoOAAA4iHwtFwI605.png-wh_50

目 录

 

三. 常见不合理的语句.........................................................100

  3.1). 没有使用绑定变量....................................................100

  3.2). 隐含转换............................................................101

  3.3). 索引列上进行运算....................................................102

  3.4). SELECT中使用 *......................................................103

  3.5). SQL中调用序列、函数的问题...........................................104

  3.6). 聚合操作取了不需要的列,列又作了转换或排序操作......................105

  3.7). SQL语句无法共享.....................................................107

  3.8). 表名书写顺序的问题..................................................108

  3.9). SQL中大小写混写.....................................................110

  3.10). 表的別名...........................................................110

  3.11). 表的关联字段设计不合理的问题.......................................112

  3.12). 没有使用 ORACLE提供的高效函数......................................112

  3.13). 减少表的访问次数的问题.............................................114

  3.14). 减少数据的查找范围.................................................115

  3.15). 画蛇添足的写法.....................................................116

  3.16). 子程序缺少异常处理部分.............................................118

  3.17). 子程序处理逻辑不明确,没有使用直接赋值,且无异常处理...............119

 

四. SQL优化写法..............................................................121

  4.1). INSERT语句的优化....................................................121

      4.1.1). 逐条插入改为批处理插入....................................121

      4.1.2). INSERT ... INTO  ... SELECT ... FROM 的优化..............123

  4.2). DELECT 语句的代化...................................................124

      4.2.1). 单表删除..................................................126

      4.2.2). 多表关联删除..............................................126

  4.3). UPDATE 语句的优化...................................................128

      4.3.1). 单表更新优化..............................................128

      4.3.2). 多表关联更新优化..........................................129

  4.4). SELECT 语句的优化...................................................130

      4.4.1). DISTINCT 的优化案例.......................................131

      4.4.2). 0R的优化案例..............................................132

      4.4.3). EXISTS的优化案例..........................................136

      4.4.4). 0R和EXISTS的混合优化案例..................................137

      4.4.5). MERGE INTO没有使用索引的案例..............................138

      4.4.6). 25个 UNION语句的优........................................140

      4.4.7). 善于使用 ORACLE函数的案例.................................143

      4.4.8). 消除重复过滤条件的案例....................................145

      4.4.9). 减少中间结果集的反案例....................................147

      4.4.10). 增加冗余字段使用索引的案例...............................148

      4.4.11). 减少表的扫描次数的案例...................................149

      4.4.12). 使用 ROWID 优化的案例....................................151

      4.4.13). ORDER BY 的优化案例......................................151

      4.4.14). 使用隐含提示的优化案例...................................152

 

五. 分析、监控和调优.........................................................157

  5.1). 如何确定那些语句需要优化............................................157

      5.1.1). 查询 V$SQL,V$SQLAREA等视图...............................157

      5.1.2). 查看 ORACLE的自动调优任务.................................158

  5.2). 如何查看执行计划....................................................160

      5.2.1). 在 PL/SQL工具中按 EXPLAIN PLAN 按钮或者F5查看执行计划.....160

      5.2.2). 使用 EXPLAIN PLAN 语句查看执行计划........................160

      5.2.3). 在CMD窗口或 SHEEL中使用SET AUTOTRACE TRACEONLY查看........161

      5.2.4). 如何分析执行计划..........................................162

  5.3). 如何确定优化点......................................................166

  5.4). 如何使用自动优化建议................................................167

      5.4.1). 使用DBMS_SQLTUNE创建调优任务..............................167

      5.4.2). 通过SQL_ID创调优任务......................................169

      5.4.3). 通过DBA_ADVISOR_ACTIONS视图查看优化建议...................171

  5.5). 如何使用SQL_TRACE和10046事件进行优化................................172

      5.5.1). 使用SQL_TRACE进行优化.....................................172

      5.5.2). 使用10046事件进行优化.....................................174

  5.6). 如何收集统计信息....................................................176

  5.7). 如何监控索引........................................................178

 

六. 补充部分(报表开发神器)...................................................180

  6.1). 分析函数............................................................180

      a). RANK() / DENSE_RANK()函数.....................................181

      b). 开窗函数(windowing functions)...............................182

      c). 制表函数(reporting functions)...............................183

      d). LAG / LEAD函数 ...............................................184

      e). FIRST / LAST函数..............................................185

      f). LISTAGG 高级分析函数..........................................186

   6.2). 行列转换..........................................................187

       6.2.1). PIVOT列转为行...........................................187

       6.2.2). UNPIVOT 行转为列........................................190

   6.3). SQL 模型子句(SQL MODELING)........................................192

       6.3.1). 简介....................................................192

       6.3.2). 单个单元格引用(SINGLE CELL REFERENCES)..................193

       6.3.3). 位置引用(POSITIONAL REFERENCES).........................194

       6.3.4). 位置引用,既更新现有单元格,又创建新单元格..............195

       6.3.5). 多单元格引用(MULTI-CELL REFERENCES).....................196

       6.3.6). 使用CV函数..............................................197

       6.3.7). 使用F0R循环.............................................198

       6.3.8). 使用ANY通配符...........................................199