DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践
2009-11-12 00:00:00 来源:WEB开发网一个维度表或者一个 snowflake 。
必须过滤实施表(基于优化器的评估结果来过滤)
必须有一个连接谓词到实施表,它使用了实施表索引中主要的列。这个规范必须满足,不管是考虑星型连接或集中连接,即使集中连接将至需要使用一个单独的事实表索引。
一个查询块表现一个左外部链接或右外部连接,可以只涉及两个表,所以不符合一个星型模式的连接
不需要为优化器能发现一个星型模式连接而显示的声明参考完整性。
避免多余的谓词
避免多余的谓词,尤其是当他们发生在不同的表的时候。在某些情况下,优化器并不能判断多余的谓词。这可能导致基数被低估。
例如,在 SAP BI 应用程序中雪花模式和实施表以及维度表被作为一个查询优化数据结构被用到。在一些情况下会有多余的时间特征列(对于月的“ SID_0CALMONTH ”或对于年的 "SID_0FISCPER")定义在事实表和维度表中。
SAP BI OLAP 处理器在维度和事实表的时间特征列上会产生多余的谓词。
这些多余的谓词可能产生很长的运行时间。
下面提供了一个例子,在一个 SAP BI 查询中有两个多余的谓词被定义在 WHERE 条件里。相同的位谓词定义在时间维度(DT)和事实(F)表。
AND ( "DT"."SID_0CALMONTH" = 199605
AND "F". "SID_0CALMONTH" = 199605
OR "DT"."SID_0CALMONTH" = 199705
AND "F". "SID_0CALMONTH" = 199705 )
AND NOT ( "DT"."SID_0CALMONTH" = 199803
AND "F". "SID_0CALMONTH" = 199803 )
DB2 优化器没有注意到相同的谓词,并对它们分别处理。这导致低估了谓词、生成不是最优的访问计划以及更长的查询运行时间。
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››最佳ASP.NET编程习惯
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
更多精彩
赞助商链接