WEB开发网
开发学院数据库DB2 DB2 LUW SQL 调优指南 阅读

DB2 LUW SQL 调优指南

 2010-02-04 00:00:00 来源:WEB开发网   
核心提示: T1=>T2=>T3那么有可能 T1,T2 连接后的结果的记录数是 1000000,DB2 LUW SQL 调优指南(8),再和 T3 连接效率就很低,如果按下面的顺序连接,减少了 I/O 访问次数,另一方面使 DB2 只处理较少的只含有相关列的页面,T1=>T3=>T2

 T1 => T2 => T3 

那么有可能 T1,T2 连接后的结果的记录数是 1000000,再和 T3 连接效率就很低。如果按下面的顺序连接,

 T1 => T3 =>T2 

T1, T3 连接后只有 1000 个记录,再和 T2 连接效率就提高很多。对于连接顺序,需要仔细观察计划树,看其中是否有生成较多的中间结果的连接以及这些连接是否含有不当的连接顺序。出现了不好的连接顺序的原因一般是由于优化器对中间结果的估算不准确引起的,这时候需要利用章节 4.4 中的方法改善统计信息和估算值。

3.  索引的设计

要得到高效的执行计划,索引的使用必不可少。创建索引时,列名的序列要考虑谓词的使用。除了选择谓词,连接谓词也要一并考虑。如对于下面的查询,

 select * from T1, T2 where T1.c1 = T2.c1 and T1.c2 = 1 and T1.c3 IN ('a','b','c') 

我们可以在 T2 上创建索引。有三个 T2 的列出现在谓词里面,c1, c2, c3,应当在这三个列上建索引。考虑列的序列时,出现在等式谓词中的列应放在前面,因为它们可以用来在索引中直接定位对应的记录。其中,选择谓词应放在最前面,连接谓词放在其后,因为选择谓词所限定的列值在索引扫描的过程中是不变的,连接谓词是不断变化的,把选择谓词放在前面有助于减少访问磁盘的随机性。最后将非等式谓词的列放在后面,也就是按(c2, c1, c3) 的顺序创建索引。

另外,使用 Index Only 是一个行之有效的优化方法。当查询中只用到表的少数几个列,并且这个表被多次连接或者表的记录特别多,就可以考虑使用 Index Only。所谓 Index Only 就是对一个表创建索引,包含查询中的所涉及的所有的表列,并保证这个 Index 被用在查询计划中。Index Only 一方面避免了对主表的访问,减少了 I/O 访问次数,另一方面使 DB2 只处理较少的只含有相关列的页面,也减少了 CPU 代价。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:DB LUW SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接