WEB开发网
开发学院数据库DB2 DB2 最佳实践: 编写并调优查询语句以优化性能最佳... 阅读

DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 一个维度表或者一个 snowflake , 必须过滤实施表(基于优化器的评估结果来过滤)必须有一个连接谓词到实施表,DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践(9),它使用了实施表索引中主要的列,这个规范必须满足,AND("DT"."SID_0CALM

一个维度表或者一个 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 优化器没有注意到相同的谓词,并对它们分别处理。这导致低估了谓词、生成不是最优的访问计划以及更长的查询运行时间。

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

Tags:DB 最佳 实践

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