当前位置: 首页 > 面试题库 >

如何在Hibernate条件api查询中插入“ Optimizer提示”

慕容嘉熙
2023-03-14
问题内容

我有一个使用条件api动态组合在一起的hibernate查询。如果按原样执行,它将生成令人难以忍受的缓慢查询。

但是我已经注意到,如果我在查询前加上/ * + FIRST_ROWS(10)* /,它们的速度大约要快1000%。我该如何使用标准API?

我试过criteria.setComment(..),但这似乎被忽略了。

在hibernate文档中,3.4.1.7。提到了查询提示,但明确指出:“请注意,这些不是SQL查询提示”

查询的结果将被分页,因此在99%的情况下,我将显示结果1-10。


问题答案:

您可以在会话级别修改优化器模式:

ALTER SESSION SET optimizer_mode = FIRST_ROWS;

在查询之前,然后将其恢复为默认值(ALL_ROWS),或者在您的情况下,由于99%的查询都将从中受益,因此您可以在架构级别(带有ON LOGON示例触发器)甚至在实例上对其进行修改级别(修改init参数)。



 类似资料:
  • 问题内容: 我有一个使用条件api动态组合在一起的休眠查询。如果按原样执行,它将生成令人难以忍受的缓慢查询。 但是我已经注意到,如果我在查询前加上/ * + FIRST_ROWS(10)* /,它们的速度大约要快1000%。我该如何使用标准API? 我试过criteria.setComment(..),但这似乎被忽略了。 在休眠文档中3.4.1.7。提到了查询提示,但明确指出:“请注意,这些不是S

  • 我正在尝试更新数据库表。如果表单中的密码为空,我如何通过提供一个条件来防止表单中的密码(“memberpassword”,$pass)被sql代码更新?有可能吗?

  • 其中“in”是来自用户的输入。 我只从hibernate中的两个表中映射了Emp_Id作为主键,因此hibernate条件将只对该表应用联接,而不对Langcode应用联接。 注意:-我不能更改hibernate映射,只能使用hibernate标准,根据客户的要求,请帮助我。

  • 问题内容: SELECT supplier_id FROM suppliers UNION ALL 我只是在查询的“ UNION ALL”子句上方和查询的“ UNION ALL”子句上方创建两个条件。 但是我的问题是我如何在条件中执行UNION ALL子句?提前致谢。 问题答案: 我认为hibernate不支持条件,但是您可以使用两个条件查询来获得预期的结果:

  • subcompany.hbm.xml 子单位表 branch.java 指定表 我需要帮助编写条件查询使用提供的SQL。