|
分類:[.NET 全般]
初めて質問します、詳しい方どうかアドバイスをよろしくお願いいたします。
DBを読んでデータセットを作成している処理があるのですが、処理時間に25秒かかります。
全体の処理が35秒なのでこの部分でかなり時間を取られています。
ソースはこちらになります。
Public Const strTableName As String = "fx_data"
Dim strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\db1.mdb"
Public Sub DS_Create()
Dim dSet As DataSet = New DataSet
Dim dAdp As OleDb.OleDbDataAdapter
Dim cn As OleDb.OleDbConnection
cn = New System.Data.OleDb.OleDbConnection(strConnection)
Dim sql As String
sql = "SELECT * FROM " & Me.SelectDataTableName & _
" WHERE DTYYYYMMDD >= " & strFrom & "AND DTYYYYMMDD <= " & strTo & _
"AND FXTIME >= " & Me.TimeFrom & "AND FXTIME <= " & Me.TimeTo & _
" ORDER BY DTYYYYMMDD,FXTIME"
dAdp = New OleDb.OleDbDataAdapter(sql, cn)
dAdp.Fill(dsData, strTableName)
End Sub
・DBはACCESS
・検索対象のDTYYYYMMDDとFXTIMEにはインデックスを付けています。
・マシーンのスペック CPU:Celeron E1200(1.6GHz) メモリ:2G OS:Windows XP
・この処理による取得件数は約500,000件
・テーブルにあるデータは約3,400,000件
・レコードはすべてこのような状態です。
TICKER DTYYYYMMDD FXTIME OPEN HIGH LOW CLOSE VOL ID
GBPJPY 20010103 100 171.88 171.88 171.86 171.86 4 2
大幅に処理時間を短縮できる方法を知っている方がいらっしゃいましたら、どうかよろしくお願いいたします。
|