- PR -

Dataadapter.FIllのパフォーマンスについて

1
投稿者投稿内容
masamasa
会議室デビュー日: 2005/03/16
投稿数: 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
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2005-03-16 12:17
こんにちは。
DB SymfoWareというのは使ったことないですが、実際(1)と(2)どちらにより多くの時間がかかっているのでしょうか?(1)であれば、実行しているSELECT文自体のパフォーマンスがよくないということはないですか?
(2)が遅い、とはあまり考えられませんが(実は1レコードにとてつもない列数あるとか?)、これはWindowsアプリケーションそれともWebアプリケーションどちらでしょう?
LocalhostのFILLメソッドという表現が意味不明ですが、Webですかねぇ。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-03-16 12:58
それぞれのテーブルに何件のデータが入っていてどのフィールドにインデックスが付いているかは分からないので、具体的なことはいえませんが、
まずはSQLのみのパフォーマンスを疑うべきだと思います。
SymfoWareを触ったのはもう2、3年前なのであんまり覚えていませんが
クライアントツールにSQLコマンドを送信するヤツがあったと思います。
それを使って、性能を計測してみたらいかがでしょうか?

1

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