DATAGRIDについての質問です!!
DATAGRIDにDBからデータを表示する際に、項目数・レコード数が数多く
存在した場合、非常に重く感じるのですが(コーディングにも問題あり)、
高速化の対応をする上で、参考となる方法を御存知の方がいらっしゃれ
ば、教えていただきたいのですが・・・
よろしくお願いします。
表示したいレコードを少なくさせるのも手段のひとつですが・・・
簡単な方法としては、DataGridコントロールを非表示にしてから
データをロードさせ、終った後に表示させる・・・
これでかなりの高速化が可能だと思います。
あとは、SQL文いじくって、ページング的インターフェースを
導入して、20件づつページングさせるかと・・・
以上。
岡田 之仁さん回答ありがとうございます。
内容は、理解しました。が、
わがままを言えば、記入内容以外に考えられる
他の方法など、ありましたら、あるだけお教えください。
申し訳ございません。
まず、速度的な問題ですが・・・
ADO経由だと思いますが、SQL文を実行してレコードセット
を得られるまでの時間は?件数は?
該当マシンでの、コントロールを表示のままでの実際のデータの
表示に関わる時間は?
DataGridの表示が遅いのは解りますが、遅い原因が全てGridの問
題なのかどうか・・・それ以外の部分でも、時間的要素として、
削減可能であれば、チューニング可能かと・・・
ちなみに、DBは何ですか?
ADOのバージョンとか・・・VB6ですか?VB.NET?
以上。
回答ありがとうございます。
確かにおっしゃるとおりですね・・・
コーディングの内容も問題があるのは確かです。
ちなみに、詳細な時間は、計測していないので不明確ですが、
データは、100項目の10万レコードです。(テスト的に作成)
ODBC経由の、VB.NETで作成しています。
DBは、Cacheです。
えっ!?
その10万レコードと言うのは、DB中のレコード数ですよネ?!
レコードセットとして取得したレコード数ではないですよネ?
ODBC経由とありますが、VB.NETであれば、マネージド
のADO.NETでのアクセスの方が高速になるはずです。
ちなみに、DBエンジンは何をご使用ですか?
なんかDataGridの高速化と言うよりは、もっと違うところにキー
があるようですが・・・
以上。
>その10万レコードと言うのは、DB中のレコード数ですよネ?!
>レコードセットとして取得したレコード数ではないですよネ?
DB中・レコードセットともに、10万です。
ちなみに、一度に10万件のレコード表示をするのは良いとは思いま
せんが、テスト的に行っています。
>ちなみに、DBエンジンは何をご使用ですか?
Cache'(インターシステムズ社)
>なんかDataGridの高速化と言うよりは、もっと違うところにキー
があるようですが
例えば、どのようなところに問題があるのでしょうか???
お教えください。
ADO経由での接続方法が、少し知識不足だったかもしてませんので、
調べてみます。
度々のご回答ありがとうございます。
しばらく経過してしまっていました・・・
やはり取得件数が10万件だったのですネ!
メモリとCPUの無駄使いです。
データベースから読み出して、メモリ上のレコ−ドセットに
格納するのにも時間がかかりますし、それをDataGridと言う
別の表示用リソースに転送・・・メモリを2倍使ってしまう
とは言いませんが、搭載メモリの少ないマシンでは、極端に
パフォーマンス低下が発生したり、ハングったりします。
やはりここは、100分の1程度に減らして、1000件上限に
なるようにSQL文を調整されては?
10万件のデータを、ホイホイファイルリソースとメモリリ
ソースの間を、行ったり来たりさせるようなシステムは現実
的ではないと思いますが・・・
ご検討下さい。
以上。
ツイート | ![]() |