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

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

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 处于这个原因多余的谓词从 DB2 数据库具体平台软件层面去掉了,以上谓词转换成下面这一个,DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践(10),只有事实表“ SID_0CALMONTH ”列上的谓词被保留:AND("F"."SID

处于这个原因多余的谓词从 DB2 数据库具体平台软件层面去掉了。

以上谓词转换成下面这一个。只有事实表“ SID_0CALMONTH ”列上的谓词被保留:

AND (   "F". "SID_0CALMONTH" = 199605 
      OR "F". "SID_0CALMONTH" = 199705 )  
 AND NOT (   "F". "SID_0CALMONTH" = 199803 )

应用 SAP 957070 和 1144883 备忘录来去掉多余的谓词。

设计并配置你的数据库

有很多数据库设计和配置选项可以影响查询性能。对数据库设计的更多建议参考“ Planning your Physical Database Design ”最佳实践文章。

使用约束来提高查询优化

考虑定义的唯一性,检查并参考一致性约束。这些约束提供了语义信息,允许 DB2 优化器重写查询来评估连接,通过连接来降低聚合和 FETCH FIRST N ROWS,去掉不必要的 DISTINCT 选项被和一些其它的优化。当应用程序可以保证它自己的关系时,信息约束也可以被用来检查并参考一致性约束。相同的优化也是可以的。当更新(插入或删除)行的时候,来自数据库管理器的强制约束可能导致很高的系统开销,尤其在更新很多有一致性约束的行的时候。如果一个应用程序在更新一行之前已经验证的信息,这样使用信息约束比起正常的约束更有效

例如,考虑 2 个表 DAILY_SALES 和 CUSTOMER 。在 CUSTOMER 表中的每一行都有一个唯一的客户键值(CUST_KEY)。 DAILY_SALES 包含一个 CUST_KEY 列并且每一行都引用一个 CUSTOMER 表中的客户键。可以创建一个参考一致性约束来防止在 CUSTOMER 和 DAILY_SALES 之间发生 1:N 的关系。如果应用程序要强制约束这个关系,可以创建一个信息化的约束。那么下面的查询避免了在 CUSTOMER 和 DAILY_SALES 之间进行连接,因为没有从 CUSTOMER 获取任何列,而且来自于 DAILY_SALES 的每一行都可以在 CUSTOMER 里面找到与之匹配的行,所以查询优化器将自动删除连接

上一页  5 6 7 8 9 10 

Tags:DB 最佳 实践

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