全面解析IBM DB2 9中的查询优化新特性
2008-08-30 16:25:53 来源:WEB开发网优化指南的例子
优化概要文件中的任何指南都必须遵从 DB2 提供的 XML 模式。如果没有正确地指定指南,那么指南将无效,并且在大多数情况下,将返回 rc = 13 的 SQL0437W。优化概要文件存储在一个名为 SYSTOOLS.OPT_PROFILE 表中。如果从这个表中更新或删除一个指南,那么需要通过发出 FLUSH OPTIMIZATION PROFILE CACHE 语句更新缓存,使之可以被使用。需要注意的是,SQL 语句测试匹配是大小写敏感的,但在尝试匹配之前,DB2 将去除冗余空格和控制字符。
下面的例子演示了优化概要文件在 3 类情况下的使用,即常规优化、查询重写和计划优化。
例子1: 总是使用索引 T1X (计划优化)
假设在表 T1 的 (c2, c1) 列上有一个索引 T1X。根据优化器的成本计算,对于以下查询,会导致一个表扫描。下面的代码展示了如何强制使用一个索引。
例子2: 总是使用 REOPT(常规优化)
可以使用 REOPT 指南,将查询优化推迟到运行时输入变量已知的时候。可能的选项有 ONCE、ALWAYS 或 NONE。
例子3:只使用DB2 V9 中的Optimization Level 0(常规优化)
通常,对于一个应用程序而言,优化级别是固定的,但是如果要使一条特定的 SQL 语句在一个不同的优化级别上执行,那么可以创建以下优化指南:
例子4:只使用 DB2 V9 中的Runtime degree ANY(常规优化)
可以有很多方法来修改内部分区的查询的运行时等级。下面的代码展示了优化指南如何为查询指定运行时等级以及如何影响查询的执行。
例子5: INLIST 改为嵌套循环连接(查询重写)
将值列表(inlist)改为使用 GENROW 函数非常有效,可以提高查询的性能。在这个例子中,值列表被放在内存中的一个表中。
更多精彩
赞助商链接