【发布时间】:2013-01-08 12:54:18
【问题描述】:
我有这样的查询:
delete from tableA where fk in (select id from tableA where fk='somevalue'
and tableA.date between date1 and date2)
当我从 TOAD 运行此查询时,它需要将近 100 毫秒。当我使用
session
.createSQLQuery(
"delete ....")
.setParameter("...")
.setParameter("...")
.setParameter("...")
.executeUpdate();
大约需要 30 分钟 真正的查询删除了 0 行。所以可能存在一些休眠/oracle问题。我怎样才能找到它们? 谢谢。
【问题讨论】:
-
不明白。请详细说明。条件需要子查询 - 应该删除哪些行。它会产生问题吗?
-
通过 show sql 属性获取 SQL 并在其上运行解释计划。这将为优化提供一些线索。顺便说一句,上面的查询看起来很奇怪,您不需要“IN”子句...猜那是因为您简化了说明...
-
tableA是子查询中的错字吗?还是您真的要查询同一张表两次?
标签: java oracle hibernate time