いくつかの、たとえば5つの異なる検索画面を備えたWebアプリ(Java、Spring、Hibernate、Sybase as DB)がある場合、ユーザーの基準に基づく検索結果が制限、たとえば1000行を超えるかどうかを最初に数えたいと思います。ユーザーが妥当なフィルターと基準を提供したとしても、1000を超える巨大な結果が発生する可能性があります。
このようにすることをお勧めしますか?
- ここでテーブル--clausesなどからcount(*)を選択します
- 次に、1000を超える場合は、実際の検索を行わずに戻り、制限エラーを表示します(検索を絞り込むようにユーザーに指示します)
- それ以外の場合、1000未満の場合は、実際の検索を実行し、結果セットをユーザーに返します
または、これを処理するためのより良い解決策はありますか?
これが進むべき道である場合、私のフォローアップの質問は、SQLクエリの重複をどのように回避できるかということです。私はこれを行うことを理解しているので、select句にcount(*)のみが含まれることを除いて、同じ検索SQLを宣言する必要があります。
更新
さらに、2つのことを避けたいと思います:1。実際のSQLの実行からの処理2. ORMによるドメインオブジェクトのロード/マッピング(この場合はHibernate) *カウントが>であることを検出すると、1と2の両方が回避されます1000。