- PR -

ストアドを利用してDataGridを表示するには・・・

1
投稿者投稿内容
ケイゴ
会議室デビュー日: 2003/10/01
投稿数: 15
投稿日時: 2003-10-02 17:45
お世話になっております。

ストアドについての質問です。

現在、25万件のレコードをDataGridでWindowsフォームに表示させているのですが、
レスポンスが悪いため、ストアドでどうにかうまくいかないかと研究中です。

解る方がいらっしゃったらどうかよろしくお願いします。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 20:04
ストアドを使うサンプルならMSDNにいっぱいありますよ。
http://www.microsoft.com/japan/msdn/howto/

でもクエリーのレスポンスもありますが、25万レコードをネットワーク経由で
取得する時と、Bindする時のレスポンスも結構悪いのでは?
とりあえずデバッグコードを埋め込んでポイントでの経過時間を見てはどうでしょう。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-03 08:59
引用:

ケイゴさんの書き込み (2003-10-02 17:45) より:

現在、25万件のレコードをDataGridでWindowsフォームに表示させているのですが、
レスポンスが悪いため、ストアドでどうにかうまくいかないかと研究中です。


こんにちは。

 この手の問題は、原因がいろいろ考えられます。

1.件数が多い
 件数が多いと、当然持ってくるのに時間がかかります。これはストアドプロシージャ
 に下から間然できる問題ではありません。全件を引っ張ってくる必要があるのか
 検討し、ないならORDER BY句とROWNUMなどによって件数を絞り込んで
 持ってくる方法をとります。

2.テーブルの設計が悪い
 適切に正規化されたり、インデックスがつけられていないと、検索に時間が
 かかります。昔の私の上司のように「インデックスをつけると遅くなる」と、
 意味不明なことを曰う人もいますが、適切にインデックスがつけられたり、
 正規化されているか、検証しましょう。
 ※確かにINSERTは速度が低下しますが、INSERTの回数とSELECTの回数と、
 ※どちらが多く、またどちらが待てないか考えれば、自ずと答えは出てきます。

3.SQL文が悪い
 テーブルが適切に設計されていても、SQL文が悪くてインデックスを使わないような
 ことになっていると、やはり遅くなります。Oracleの場合ならヒント句をつける、
 OR結合をUNION ALLなどに置き換える、検索条件を見直すなど、
 SQL文のチューニングを行いましょう。

4.検索条件そのものが悪い
 テキストの後方一致、中間一致などは速度を低下させる元です。このような検索が
 ある場合は、その他の検索結果を一時表に入れて、そこから再検索することで
 スピードアップする可能性があります。


どうも1のような気がするのですが???
ケイゴ
会議室デビュー日: 2003/10/01
投稿数: 15
投稿日時: 2003-10-03 17:07
ありがとうございました。
ビューなども使用してなんとかがんばってみます。
この場合はストアドはあまり意味がないようですね。

ケイゴ
会議室デビュー日: 2003/10/01
投稿数: 15
投稿日時: 2003-10-06 14:02
近況をご報告いたします。
オラクル(データベース)でCreate Index....というコマンドを打ち込み
テーブルにインデックスを付けたところ、ものすごく早く表示することが
できるようになりました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)