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

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

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 把 FETCH FIRST N ROWS ONLY 子句和 OPTIMIZE FOR N ROWS 子句放在一起使用OPTIMIZE FOR N ROWS 子句表明对于优化器应用程序打算只获取 N 行,不过查询将返回完整的结果集,DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践(8),

把 FETCH FIRST N ROWS ONLY 子句和 OPTIMIZE FOR N ROWS 子句放在一起使用

OPTIMIZE FOR N ROWS 子句表明对于优化器应用程序打算只获取 N 行,不过查询将返回完整的结果集。 FETCH FIRST N ROWS ONLY 子句显示查询只需返回 N 行。

DB2 数据服务器不会在为外部子查询指定了 FETCH FIRST N ROWS ONLY 而自动假设 OPTIMIZE FOR N ROWS 。尝试与 FETCH FIRST N ROWS ONLY 一起指定 OPTIMIZE FOR N ROWS 来鼓励查询计划直接从引用的表返回行,而不执行一个缓冲操作,比如插入一个临时表、排序或插入一个哈希连接的哈希表。

应用程序指定 OPTIMIZE FOR N ROWS 来鼓励查询计划避免缓冲操作,也不获取整个结果集,它们可能导致性能低下。这是因为快速返回前 N 行的查询计划可能不是对于获取整个结果集的查询计划。

如果你正在使用星型模式的连接,请确保你的查询满足需要的标准

优化器为星型模式考虑两个特殊的连接方法,叫做一个星型连接或集中连接,它们可以明显的提高性能。如果查询必须满足以下标准。

对每个查询块

最少 3 个不同的表被连接

所有连接谓词必须相等

没有子查询存在

在表与表之间或者查询块之间不存在相关性或依赖性

另外,对于索引 ANDing,必须没有不确定的函数,因为为方便 semi-joins 事实表的谓词必须通过索引来应用

事实表

是查询块中最大的表

少于 10000 行

被视为只有一个表

必须连接到至少两个维度表或叫做 snowflakes 的组。

维度表

不是事实表

可以单据连接到实施表或在 snowflakes 中

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

Tags:DB 最佳 实践

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