7

Hibernate で MS SQL Server 2008 を使用しています。私が持っている質問は、Hibernate がどのように実装されるかですsetMaxResults

次の簡単なシナリオを考えてみましょう。

100 行を返すクエリがあり、 に 1 を渡すとsetMaxResults、これは SQL サーバー自体から返される結果に影響しますか (select top 1ステートメントを実行しているかのように)、または Hibernate は最初にすべての結果を取得しますか (この場合は 100 行すべて)。一番上のもの自体を選びますか?

私が尋ねている理由は、行数が増え始めるとパフォーマンスに大きな問題が発生するからです。

ありがとうございました。

4

2 に答える 2

4

Hibernate は、制限クエリをサポートするすべてのダイアレクトに対して、制限タイプのクエリを生成します。SQLServerDialect がこれをサポートしているため ( org.hibernate.dialect.SQLServerDialect.supportsLimit()、およびを参照.getLimitString())、-query を取得しますselect top 1

絶対に確認したい場合は、デバッグログをオンにするか、-オプションを有効にしshowSqlてテストしてください。

于 2013-02-28T08:25:44.950 に答える