使用OleDbDataReader从Access检索大表(慢)

时间:2013-03-22 11:53:05

标签: vb.net ms-access oledb oledbdatareader

我目前正在迁移使用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是打开大型排序数据集的最佳方法/对象吗?

由于

0 个答案:

没有答案