减少与 DB2 for z/OS 的会话:第 2 部分(更多经过检验的基础知识和一些新的编程技巧)
2010-06-16 00:00:00 来源:WEB开发网一个不那么和蔼的人曾经问我:“哪种破产品会将值加载到工作存储库以避免连接到该产品?”我想了一会后回答:“那种能够认识到程序员有选择且有脑子,并理解避免不必要的调用、连接和获取页面是一个好主意的产品。”由于 DB2 很快且有缓冲池,可以减少实际的 I/O 并不意味着要连接 DB2 100 万次来读取 10 行的表格,与此相比,连接 DB2 一次就将 10 行读取到工作存储表,然后寻址程序内存 100 万次要聪明的多。
减少重复执行嵌套选择的次数
考虑以下 SQL:
Select col1, col2, col3
From big_table where item = :hv-item-just-read
And big_table.deptno in (select deptno from little_dept-table
Where division = Eastern)
对于输入序列文件的每个选项,程序逻辑需要在一个大表格中进行查询,以获取 col1、col2 和 col3 的相关值。正如上文所述,希望输入的数据集按照项目编号进行排序,然后查看程序以了解该项目编号是否与查询完成前的编号有所不同。
但让我们更深入的查看 SQL。嵌套选择在 Eastern 分区创建一个部门列表,然后确保目标部门位于该列表中。我保证不需要太多精力就可以立即创建 “Eastern 分区的部门” 列表,然后可以执行查询,无需连接到 DB2。例如,我们可以使用 V8 行集定位指针连接 DB2 并获取列表;然后可以将 SQL 更改为硬编码列表,可以从我们的数组构建:
Declare CursorDept with rowset positioning for
Select deptno from little_dept-table
Where division = Eastern)
Fetch next rowset from CursorDept
For 20 rows
Into :hvarray-deptno
(code to ensure that +100 was reached)
Select col1, col2, col3
From big_table where item = :hv-item-just-read
And big_table.deptno in (:hvdept1, :hvdept2, :hvdept3....:hvdept20
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››Form Reset Function
- ››db2 命令选项解释
- ››FOREACH 宏之GCC实现
- ››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 基础: 表空间和缓冲池
更多精彩
赞助商链接