Hibernate中的setMaxResults(N)如何工作?

use*_*558 6 sql-server hibernate sql-server-2008

我正在使用MS SQL Server 2008和Hibernate.我的问题是Hibernate如何实现setMaxResults

采取以下简单方案.

如果我有一个返回100行的查询,如果我传递1 setMaxResults,这会影响SQL服务器本身的返回结果(就像运行select top 1语句一样)或者Hibernate是否首先获得所有结果(在这种情况下全部为100行)并挑选顶部的一个?

我要问的原因是当行数开始增长时会出现巨大的性能问题.

谢谢.

Ale*_*øld 4

Hibernate 将为所有支持限制查询的方言生成限制类型查询。由于 SQLServerDialect 支持此功能(请参阅org.hibernate.dialect.SQLServerDialect.supportsLimit()、 和.getLimitString()),您将得到一个select top 1-query。

如果您想绝对确定,您可以打开调试日志记录,或启用showSql- 选项并进行测试。