2009-08-18 8 views
1

現在のUIの開発でパフォーマンスの問題が発生しました。しかし、この問題は一般的だと思います。asp.netグリッドのページデータを取得する際のパフォーマンスが向上

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

ストアドプロシージャはここなどcurrentpageIndex、ページサイズなどのパラメータを、他の検索条件を、持っているSPのための擬似コードです:

-- SP begins 
-- calculate the page index range to return required using current page index and page size 
-- query the table in a CTE and do all filtering. Also calculate row numbers so that 
-- correct record range can be returned. 
-- use the cte to return the correct record based on the row number calculated in CTE 
-- SP ends 

私は

  1. 場合は、このアプローチで問題/クエリを次のようしていますDbテーブルのサイズが大きい(たとえば1,000万レコード)と、パフォーマンスが低下し、このアプローチは実用的ではありません。
  2. テーブル変数またはテンポラリテーブルを使用する方が便利ですか?
  3. ページングされたデータをデータベースから取得する他の効率的な方法はありますか?

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

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

更新:効率的にページングされたレコードを取得するために、他のパフォーマーであるapproachesはほとんど見つかりませんでした。

答えて

1

サーバーサイドページングのいくつかのテクニックを示すSQL Server 2005 Paging – The Holy Grailという名前のSqlServerCentralに関する記事があります。あなたはそれを見るために登録する必要があります。

私は本当に大きな結果セットを知っていますが、Googleのようなソフトウェアは返されます。simply estimate返されたすべての行の数を取得する必要性を回避して、返される行の数。

申し訳ありませんが、私はより多くの助けを与えることはできません。