最近,我的一位同事评论说我不应该使用
LIKE ‘%’||?||’%’
而是使用
LIKE ?
在SQL中然后替换LIKE?在执行SQL之前,使用LIKE’%’||?||’%’标记.他指出,使用单个参数标记,DB2数据库将始终缓存该语句,从而减少SQL准备时间.
但是,我不确定它是否准确.对我而言应该是另一种方式,因为我们每次执行查询时都通过对SQL执行字符串替换来执行更多处理.
有人知道单个标记是否真的加快了执行速度?仅供参考 – 我使用的是Spring 2.5 JDBC框架,DB2版本是9.2.
我的问题是 – DB2是否对待“LIKE?”与“LIKE’%’||?||’%’”不同,就缓存和准备工作而言.
解决方法:
‘喜欢 ?’是PreparedStatement.准备好的语句是JDBC驱动程序级别的优化.我们的想法是数据库分析查询以决定如何最有效地处理它们.然后,DB可以缓存生成的查询计划,并在完整语句上键入.重用相同的语句会重用查询计划.所以基本上如果你使用不同的比较字符串多次运行相同的查询,并且如果查询计划保持缓存,那么是,使用“LIKE?”会更快.
关于PreparedStatements的一些有用(虽然有些过时)信息:
> Prepared Statments
> More Prepared Statments