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 中
- ››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 数据模型
更多精彩
赞助商链接