現在、VB6 を使用して構築された古いアプリケーションを移行しています。このアプリケーションは、主に Access データベースからのデータを処理するために使用されます。私はすべての作業を行うために DAO ライブラリを使用していました。現在、VB.net (Visual Studio Express 2010 を使用) に移行し、OleDb ライブラリの使用を開始していますが、速度に関する問題に直面しています。ネットワークの場所から約 7 列と 2500 万行 (データ型は主に double) の大きなテーブルを開いて反復しようとすると、約 10 分かかります。私が DAO を使用していたとき、テーブルを開いてすべてのレコードを実行するのに約 1.5 分かかりました。これは私のアプリケーションの速度の大きな違いです。私はそれを期待していませんでした。
これは、そのテーブルを開くために使用する手順です。
Public Const ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Public Const DataBasePath = "My DataBase Location"
Public BE As OleDbConnection = New OleDbConnection(ConnectionString & DataBasePath)
Public Sub OpenLargeTable
BE.Open()
Dim QueryExecute As OleDbCommand, DataSet as OleDbDataReader
Try
QueryExecute = New OleDbCommand("Select * From LargeTable Order By Field1, Field2, BE)
DataSet = QueryExecute.ExecuteReader() : DataSet.Read()
QueryExecute.Dispose() : QueryExecute = Nothing
Catch
'Error Handling
End Try
End Sub
テーブルを並べ替える必要があり、Order By 句を含む SQL ステートメントを使用していました。Order By がないと非常に高速であることがわかりました。DAO と比較して、データを注文するときだけ、非常に遅いことがわかりました。レコードを並べ替えるアクセス データベースでクエリを作成し、OleDbCommand オブジェクトの SQL ステートメントでクエリを呼び出そうとしましたが、役に立ちません。私の質問は、OleDbDataReader は、並べ替えられた大規模なデータセットを開くための最良のメソッド/オブジェクトですか?
ありがとう