DB2 应用开发入门指南
1. DB2 动态 SQL 优化
在许多动态编程语言(如 PHP 或 Ruby on Rails)中,SQL 是动态运行的。程序员常常会编写除字段值不同外基本相同的 SQL 语句,例如:
SELECT lastname, salary FROM employee where firstnme = 'Raul'
SELECT lastname, salary FROM employee where firstnme = 'Jin'
DB2 会将这些语句视为不同的动态 SQL 语句,在运行时会分别准备和执行,多次准备相同语句会导致性能下降。在 DB2 9.7 之前,建议使用参数标记来编写语句,如:
SELECT lastname, salary FROM employee where firstnme = ?
使用参数标记后,程序只需准备一次语句,然后通过执行语句为参数标记提供不同的值。
在 DB2 9.7 中,引入了语句集中器技术,它会自动将除字段值外相同的语句合并为一个带参数标记的语句,然后执行不同值的执行语句。不过,语句集中器也能判断何时不合并某些语句,例如当你故意添加一些子句来影响 DB2 优化器时。
在性能方面,静态 SQL 通常比动态 SQL 表现更好,因为静态 SQL 的访问计划是在预编译时确定的,而不是在运行时。但对于有大量插入和删除操作的环境,预编译时计算的统计信息可能过时,导致静态 SQL 的访问计划不是最优的。在
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



