WEB开发网
开发学院数据库MySQL Mysql入门系列:Perl DBI基础(2) 阅读

Mysql入门系列:Perl DBI基础(2)

 2006-12-31 10:49:46 来源:WEB开发网   
核心提示: 请注意这个INSERT 查询中的‘ ?’就是一个占位符,调用execute( ) 时,Mysql入门系列:Perl DBI基础(2)(9),将查询发送给服务器,传递这个值来代替占位符,然而,可能仍想使用占位符编写自己的查询;如果偶然将DBI 脚本传递给支持查询高速缓

请注意这个INSERT 查询中的‘ ?’就是一个占位符。调用execute( ) 时,将查询发送给服务器,传递这个值来代替占位符。一般来说,如果发现在循环内部调用了do( ),应该在循环前调用prepare( ),并在这个循环内部调用execute( ) 更好一些。

有关占位符的一些注意事项:

在查询字符串内,不要在引号中封装占位符字符。如果这样做,不能识别为占位符。

不要使用quote( ) 方法来指定占位符的值,否则将在插入的值中得到额外的引号。

在查询字符串中可以有一个以上的占位符,但是要确保占位符的标记符与传递给execute( ) 的值一样多。

每个占位符都必须指定一个单独的值,而不是一列值。例如,不能运行这样的语句:

为了将NULL 指定为占位符,应该使用un d e f。

不要对关键字使用占位符。这样会出问题,因为占位符的值是由quote( ) 自动处理的。

关键字将被放在引号括起来的查询中,因此,这个查询会由于语法错误而失败。

除了在循环中提高效率以外,对于某些数据库引擎,可以从占位符的使用中获得其他的性能好处。某些引擎高速缓存了准备好的查询,以及为有效地运行这个查询所生成的计划。也就是说,如果以后这个服务器收到同样的查询,则它可以再次使用相应的计划而不用生成。查询高速缓存特别有助于复杂的SELECT 语句,因为可能需要花费时间生成较好的执行计划。占位符提供了一个在高速缓存中寻找查询的好机会,因为它们使查询比直接在查询字符串中嵌入指定的列值来构造查询更通用。对于MySQL,在这种方式下,占位符并不提高性能,因为没有高速缓存查询。然而,可能仍想使用占位符编写自己的查询;如果偶然将DBI 脚本传递给支持查询高速缓存的引擎,则这个脚本比没有占位符时运行效率更高。

上一页  4 5 6 7 8 9 10  下一页

Tags:Mysql 入门 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接