我有查詢,如:如何直接查詢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