分类: Sybase
2008-04-11 10:58:56
来源:赛迪网 作者:limeinane |
每次向数据库发送语句时,服务器必须首先准备语句。准备语句可以包括:
•语法分析语句并将它转换为内部形式。
•例如,通过检查查询中所指的列是否确实存在,来验证对数据库对象的所有引用的正确性。
•如果语句涉及连接或子查询,则导致查询优化器生成访问计划。
•在所有的这些步骤都已经执行之后,执行该语句。
重复使用预准备语句可以改善性能
如果您发现自己要反复使用同一语句,例如,在表中插入多行,那么重复准备语句会产生很大的不必要的开销。为消除这种开销,一些数据库编程接口提供了使用预准备语句的方法。预准备语句是包含一系列占位符的语句。当您要执行语句时,您所要做的只是给占位符赋值,而不是再次重新准备整个语句。
使用预准备语句在执行多个类似的操作 (如插入多行)时特别有用。
一般来讲,使用预准备语句需要执行下面的步骤:
1. 准备语句
在这一步,一般都要为语句提供一些占位符而非实际的值。
2. 反复执行预准备语句
在这一步,提供每次执行语句时要使用的值。不必每次都准备该语句。
3. 删除语句
在这一步,释放与预准备语句关联的资源。一些编程接口会自动处理此步骤。
不要准备那些只使用一次的语句
通常,不应该准备那些将只执行一次的语句。单独的准备和执行会产生
轻微的性能损失,并且它会给应用程序带来不必要的复杂性。
然而,在一些接口中,确实需要准备一个语句以将它与游标关联。
要求准备和执行语句并不是 SQL 的组成部分,并且它们也因接口而异。Adaptive Server Anywhere 中的每一个编程接口都提供了使用预准备语句的方法。 |