我有一个使用条件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参数)。
ALL_ROWS
ON LOGON