【发布时间】:2016-07-11 15:09:07
【问题描述】:
我们无法弄清楚为什么在 executeUpdate 查询中使用 setParameter 比使用 setString、setLong 更慢。
SQLQueryImpl query = session.createSQLQuery("update message set status = :status where attempt_id = :attemptId")
每当我使用时:
query.setParameter("status", Status.DONE)
query.setParameter("attemptId", id)
与使用相比,它的解析速度慢了近 10 倍:
query.setString("status", Status.DONE.toString())
query.setLong("attemptId", id)
我可以验证他们在下面生成了类似的查询:
update message set status = ? where attempt_id = ?
为什么 setParameter() 比较慢?
使用 setString(), setLong() 优先于使用 setParameter()
我认为它只是添加了一个层来确定要添加的类型,但应该几乎相同。
【问题讨论】: