1


0

現在のUIの開発でパフォーマンスの問題が発生しています。 私が思うに、問題は一般的です。

私は単純なasp.netグリッドを持つページを持っています。 グリッドは特定の検索条件に基づいてテーブルからデータを表示します。 さらに、gridはページサイズが決まっています(例えば10)。 白黒ページをナビゲートするのに使用することができるページャが下部にあります。 バックエンドでは、検索ボタンを押すたびにストアドプロシージャが呼び出され、目的のデータが返されます。

ストアドプロシージャには、currentpageIndex、pagesize、その他の検索条件などのパラメータがあります。 これがspの擬似コードです。

 -  SPが開始 - 現在のページインデックスとページサイズを使用して必要なページインデックス範囲を計算します。 -  CTEでテーブルを照会し、すべてのフィルタリングを行います。 また行番号を計算します。正しいレコード範囲を返すことができます。  -  CTEで計算された行番号に基づいて正しいレコードを返すためにcteを使用します -  SPが終了します

このアプローチでは、次のような問題/質問があります。

  1. Dbテーブルのサイズが大きいと(1000万レコードなど)、パフォーマンスが低下し、この方法は実用的ではなくなります。

  2. テーブル変数または一時テーブルの使用はより便利ですか?

  3. データベースからページデータを取得する他の効率的な方法はありますか?

こんにちはダン、記事は合計行の計算のための新しい洞察を提供しました。 本当に役に立ちました。 ありがとう。

しかし、データが大きいときにCTEを使用するよりも良い方法はありますか?

更新日:私は効率的にページ記録を取得するための他のいくつかの高性能な approachesを見つけました。

1 Answer


1


SqlServerCentralには、http://www.sqlservercentral.com/articles/T-SQL/66030/ [SQL Server 2005 Paging - The Holy Grail]という優れた記事があり、サーバー側のページングに関するいくつかのテクニックを紹介しています。 あなたはそれを見るために登録する必要があります。

私は非常に大きな結果セットを知っているので、グーグルのようなソフトウェアは 単純な見積もり全部の数のカウントを得る必要性を迂回して何行返されるかを知っています行が返されました。

それ以上助けられないのなら、すみません。