java – “LIKE?”比LIKE’%’||更有效?||’%’

最近,我的一位同事评论说我不应该使用

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

上一篇:DB2同平台迁移数据库


下一篇:java – OpenJPA脏读提示