一尘不染

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

hibernate

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

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

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

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

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


阅读 208

收藏
2020-06-20

共1个答案

一尘不染

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

ALTER SESSION SET optimizer_mode = FIRST_ROWS;

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

2020-06-20