大きな結果セットになるデータベースクエリがあります。データを表示するクライアントはネットワークを介してデータを受信するため、データベースから最初の50件の結果のみを取得してクライアントに送信することにより、転送されるデータの量を最小限に抑えるという考えでした。次に、2番目のページにジャンプして次の50件の結果などを取得する可能性を提供します(例:グーグルが提供するものと同様のもの)
問題は、ページングを実装する効果的な方法は何ですか。mssqlが可能な限りキャッシュを使用し、ページングを変更するたびに同じことが再度実行されないようにしたいと思います。
同時にデータベースをクエリしているクライアントが他にもあります。使用されているSQLエンジン:MS SQL 2005
私の考えは:
- 準備されたSQLステートメントを使用して、実行プランの共有を確保する
- ROW_COUNT変数を使用して、必要な行のみを取得します
しかし、それは本当に最も効果的な方法でしょうか?または、結果セット全体を取得して、データをクライアントに送信するコードにページングを実装する方が良いと思いますか?
ヒントをありがとう!
よろしく、トーマス