[ASP.NET]GridViewの独自ページング処理でページ表示が遅い(遅すぎる)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-11-17 17:34
いつも、お世話になっています。「ita」と申します。
前回の続きなのですが、DBのテーブル情報をWebページに表示する際のページング処理をGridViewのものを使わずに独自に実装して行っています (www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47195&forum=7&12) (GridViewのページングは、毎回全行を取得し該当ページのものだけを表示するようになっており巨大テーブルだと非効率だ。とある書籍に書いていましたので) ドロップダウンリストにページ番号を仕込み、ページを切り替えるイベントで該当ページのみを取得するSQL文を発行し、それをGridViewにBindしています。(20行/ページ)しかし、巨大テーブル(約160万行)をページングした時に、Bind自体 は数秒ぐらいで終わるのに、そこからページ表示までになにかの処理を行ったまま、ページングできないという現象になっています。 これは、AjaxのUpdatePanelの中にGridViewを入れた場合のみで、UpdatePanelの外なら数秒後ぐらいに正常にページングされたページが表示されます。 (ソース中の「※1」で時間がかかるのはデータ取得で仕方ないのは理解できますが、ここを終えてからページ表示が5分待ってもできず、そのままの状態になってしまいます。) UpdatePanelでAjax化した時に、Bind後に何が起こっているでしょうか? 対処方法をご存じの方がいらっしゃればお願いします。 ページングするときのSQL文(2ページ目を取得する際のSQL(select)) SELECT TOP 20 * from BigTable where sn not in (SELECT TOP 20 sn from BigTable where ORDER BY sn desc) order by sn desc 最初の20行(1ページ目)を除いた次の20行だけを取得する
因みに、800行程度の小さいテーブルの場合は、同じソースでページングしてもすんなり表示しています。 開発環境 ・ASP.NET 2.0 ・Visual Basic 2008 ・Windows 2000 Server IIS6.0 + Ajax1.0 よろしくお願いします。 [ メッセージ編集済み 編集者: ita 編集日時 2008-11-17 17:35 ] [ メッセージ編集済み 編集者: ita 編集日時 2008-11-17 17:37 ] | ||||||||
|
投稿日時: 2008-11-18 12:57
ドロップダウンリストで8万行ですか? 無謀だと思う。 | ||||||||
|
投稿日時: 2008-11-18 13:58
todoさん
こんにちは。ドロップダウンリストには、ページ番号のみです。 1ページあたり20行ですから、8万行/20行=4000ページなので、 ドロップダウンリストには、1~4000番までの数字だけを仕込んだということです。 (ドロップダウンリストは、ページをピンポインントで指定する為に使っています)
| ||||||||
|
投稿日時: 2008-11-18 14:26
と最初に書いてあるから8万ページなんじゃないですか? ドロップダウンリストに4000でも私は無謀だと思いますが・・・。 [ メッセージ編集済み 編集者: King 編集日時 2008-11-18 14:27 ] | ||||||||
|
投稿日時: 2008-11-18 14:42
Kingさん
・・・そうでした。 160万行/20=80万でした。 (引用した部分しか見ておらず、失礼しました) todoさん すみません。 この部分がたしかに無謀ですね。Gridviewばかりに目がいき、ドロップダウンリストはノーマークでした。 この部分の改善を試してみます。ありがとうございます。
|
1