我有本机查询(伪代码): SELECT count(1)FROM my_table WHERE条件
当我在SQLDeveloper中执行它时,查询大约需要2秒钟。但是当它在我的应用程序中执行大约需要35秒。代码是:
String nativeSql = SELECT count(1) FROM my_table WHERE conditions;
Query query = entityManager.createNativeQuery(nativeSql);
int total = ((BigDecimal) query.getSingleResult()).intValue(); // Very Slow
persistence.xml配置如下:
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.generate_statistics" value="true" />
</properties>
统计结果如下:时间:35842ms,行数:1
该表共有567.885个寄存器,上面的查询返回134.736。当它是一个简单的查询时,我看不出性能不佳的问题。