DB2 SQL 调优/优化 案例

来源:百度文库 编辑:神马文学网 时间:2024/05/01 14:21:25
DB2 SQL 调优案例
环境:windows xp/DB2 v8.1/actuate报表系统.
数据库的优化工作,对于开发者而言基本就是让select , update,delete更快速,而绝大部分时候都是为了让查询,也就是让select 更快;当然了,从DBA的角度思维 就更为 底层拉,但目的应该是一致的。 当系统是个大数据量应用的时候,作为DBA在建立数据库脚本时候,应该需要更多与开发者沟通,因为表结构与索引的将会直接影响开发者的select 效率。
比如大表可以建立分区表,建立分区索引,新建立汇总表等,事先作好准备就不容易临阵返工。 这块以后再做详细叙述,这里 基于这样的现实, 不能修改表结构,但可以加点表索引(也许现实就这样,修改表会影响现有系统的正常运行)。这个时候要提高查询(特别复杂查询的效率),有几条常用的准则,不保证每次都很灵,但应该会达到屡试不爽的感觉。
1.  想尽办法用索引:检查where 的判断语句, 确保该用索引的字段一定要用上索引。如果没有需要考虑建立判断字段的索引。(对效率有重要影响)
2.  大表化小:检查复杂语句的多表关联查询时候,如果有一张数据主表,含有最多,其他相比数据量都很少,可以把大表查出结果作为临时表再与其他表关联。(对效率有重要影响)
3.  特别注意大表的in操作:如果 in操作 是对于一张大表 ,需要特别小心;对于小表in操作,如果集合的元素不大,比如小于10个 的话,对于性能的影响不大。 对于大表的in操作,需要用替代方案,大表关联小表查询,在大表恰好有in操作, 这个时候需要把该大表提取为临时表。(对效率有重要影响)
4.  注意where 的顺序;从右到左,把产生数据最少的放右边,依次排列。 但这步通常情况下对效率影响不明显。(对效率有较小影响)
5.  替换union . 如果上下查询没有重复数据,可以把union换成union all。 这个主要根据上下查询的语意看出来。(对效率有较小影响)
以上是几条心得,(以下联结有关于oracle 查询优化的详细叙述,其他大部分同样适用db2)
以下结合实际例子做一解剖,供大家学习参考。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/madsun/archive/2008/06/01/2501710.aspx