我有查询,如:如何直接查询hibernate和运行sql之间的查询差异?
delete from tableA where fk in (select id from tableA where fk='somevalue'
and tableA.date between date1 and date2)
当我蟾蜍运行此查询所花费近100毫秒。当我运行使用
session
.createSQLQuery(
"delete ....")
.setParameter("...")
.setParameter("...")
.setParameter("...")
.executeUpdate();
需要将近30分钟 真的查询删除0行。所以可能会有一些hibernate/oracle的问题。我如何找到它们? 谢谢。
不明白。请详细说明。子查询需要标准 - 哪些行应该被删除。它会产生问题吗? – user710818
我建议启用Hibernate的查询日志,如[这里](http://www.javalobby.org/java/forums/t44119.html)或[here](http://blog.aplikacja.info/2010/03/how-to-debug-hibernate-sql-queries-with-parameters /),因为在运行本机查询时不应该有这样的区别。 – fvu
通过show sql属性获取SQL并在其上运行解释计划。这会给优化提供一些线索。顺便说一句,上面的查询看起来很奇怪,你不需要“IN”子句...猜测那是因为你简化了插图... – aishwarya