- - PR -
Dataadapter.FIllのパフォーマンスについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-16 11:03
お世話になります。1年半ぶりの.net開発で戸惑っておりますが、どなたかご存知でしたらお助けを。
開発環境;OS WIN2K Pro;ツール VS.NET 2003,.Net FrameWork 1,1;DB SymfoWare DBへはADO接続をしています。下記のSQLで取得したADODB.RECORDSETをSpreadSheetのデータソースにバインドしていますが、パフォーマンスが悪くて悩んでいます。 SELECT A1,A2,A3,B1,C1 FROM (SELECT 1,2,3,A1 FROM A LEFT JOIN B ON A.PK = B.PK WHERE ....) AS T1 LEFT JOIN C ON T1.key1 = C.PK ORDER BY ..... 100件程度のデータなのですが、コード(1)(2)で1分以上掛かってしまいます。 Localhostの FILLメソッドはこの程度と割り切るものでしょうか。 Dim MyDa As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter Dim myDS As DataSet = New DataSet 'レコードセットとデータアダプターの接続-(1) MyDa.Fill(myDS, ADORecordset, "T1") 'データソース設定-(2) Spread.DataSource = myDS |
|
投稿日時: 2005-03-16 12:17
こんにちは。
DB SymfoWareというのは使ったことないですが、実際(1)と(2)どちらにより多くの時間がかかっているのでしょうか?(1)であれば、実行しているSELECT文自体のパフォーマンスがよくないということはないですか? (2)が遅い、とはあまり考えられませんが(実は1レコードにとてつもない列数あるとか?)、これはWindowsアプリケーションそれともWebアプリケーションどちらでしょう? LocalhostのFILLメソッドという表現が意味不明ですが、Webですかねぇ。 |
|
投稿日時: 2005-03-16 12:58
それぞれのテーブルに何件のデータが入っていてどのフィールドにインデックスが付いているかは分からないので、具体的なことはいえませんが、
まずはSQLのみのパフォーマンスを疑うべきだと思います。 SymfoWareを触ったのはもう2、3年前なのであんまり覚えていませんが クライアントツールにSQLコマンドを送信するヤツがあったと思います。 それを使って、性能を計測してみたらいかがでしょうか? |
1