DB2 应用开发全解析
1. SQL 基础与性能考量
在 SQL 语句中,问号(?)被称为参数标记。借助参数标记,程序只需对语句进行一次准备,随后通过执行语句为参数标记提供不同的值。在 DB2 9.7 中,DB2 引入了语句集中器技术,该技术会自动将除字段值外其他部分相同的语句合并为一条带有参数标记的语句,然后使用不同的值执行这些语句。不过,语句集中器具备智能判断能力,例如当你特意添加某些子句来影响 DB2 优化器时,它不会将这些语句合并。
从性能方面来看,静态 SQL 通常比动态 SQL 表现更优,因为静态 SQL 的访问计划是在预编译时确定的,而非运行时。但在存在大量插入和删除操作的环境中,预编译时计算的统计信息可能过时,导致静态 SQL 的访问计划并非最优。这种情况下,如果频繁执行 RUNSTATS 命令来收集当前统计信息,动态 SQL 可能是更好的选择。需要注意的是,很多用户认为嵌入式 SQL 仅为静态,实际上它既可以是静态的,也可以是动态的。
2. CLI 与 ODBC
Call Level Interface (CLI) 最初由 X/Open 公司和 SQL 访问组开发,旨在为开发可移植的 C/C++ 应用程序定义一个可调用的 SQL 接口,无论使用何种关系数据库管理系统(RDBMS)。基于 X/Open Call Level Interface 的初步草案,微软开发了开放数据库连接(ODBC),随后 ISO CLI 国际标准采纳了大部分 X/Open Call Level Interface 规范。DB2 CLI 基于 ODBC 和 SQL/CLI 国际标准,它符合 ODBC 3.51 标准,当被 ODBC 驱动管理器加载时,可充当 ODBC