我目前正在迁移使用 VB6 构建的旧应用程序。该应用程序主要用于处理来自 Access 数据库的数据。我正在使用 DAO 库来完成所有工作。我现在将它迁移到 VB.net(使用 Visual Studio Express 2010)并开始使用 OleDb 库,但我面临速度方面的问题。当我尝试从网络位置打开并迭代一个大约 7 列和 2500 万行(数据类型主要是双精度数据类型)的大表时,大约需要 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 是打开大型排序数据集的最佳方法/对象吗?
谢谢