Hibernate中的setMaxResults(N)如何工作?
我正在使用带有Hibernate的MS SQL Server 2008。我的问题是Hibernate如何实现setMaxResults
采取以下简单方案。
如果我有一个返回100行的查询,并且如果我将1传递给setMaxResults
,这会影响SQL Server本身返回的结果(就像运行一条select
top 1语句一样),还是Hibernate首先获取所有结果(在这种情况下为所有100行)并挑选最高的自己?
我问的原因是,当行数开始增加时,它将出现巨大的性能问题。
谢谢。
回答:
Hibernate将为所有支持限制查询的方言生成一个限制类型查询。由于SQLServerDialect支持此功能(请参阅org.hibernate.dialect.SQLServerDialect.supportsLimit()
和.getLimitString()
),您将获得select
top 1-query。
如果您想绝对确定,可以打开调试日志记录,或启用showSql
-option和test。
以上是 Hibernate中的setMaxResults(N)如何工作? 的全部内容, 来源链接: utcz.com/qa/417287.html