Hibernate Query在系统中运行缓慢,但直接运行时速度很快

2024-04-28

我遇到了与本周播客中类似的问题。

我们有一个使用 Hibernate 和 Sql Server 2005 的 Java 应用程序。

Hibernate 正在为我们生成一个查询,该查询需要近 20 分钟才能完成。

如果我们使用 show_sql 进行相同的查询并将问号替换为常量值,则会立即返回答案。

我认为我们需要选项(重新编译),但我不知道如何使用 HQL 来做到这一点。

请帮忙!


从您的问题描述来看,您似乎遇到了参数嗅探。本质上,SQL Server 正在根据传入的一组旧参数值创建查询计划,并且不会为当前运行的查询创建有效的执行计划。

通常,我通过将参数值传递到局部变量并在查询中使用这些值或使用选项(重新编译)来解决此问题。但是,由于您使用的是 Hibernate,所以我通常的解决方案不适合您。据我了解,最好的选择是使用 Hibernate 使用prepareStatement() 或 createSQLQuery() 运行本机 SQL 查询,不幸的是,这消除了使用 Hibernate 的一些好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate Query在系统中运行缓慢,但直接运行时速度很快 的相关文章

随机推荐