Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用OleDbDataReader从Access检索大表(慢速)_Vb.net_Ms Access_Oledb_Oledbdatareader - Fatal编程技术网

Vb.net 使用OleDbDataReader从Access检索大表(慢速)

Vb.net 使用OleDbDataReader从Access检索大表(慢速),vb.net,ms-access,oledb,oledbdatareader,Vb.net,Ms Access,Oledb,Oledbdatareader,我目前正在迁移一个使用VB6构建的旧应用程序。该应用程序主要用于处理Access数据库中的数据。我正在使用DAO库来完成所有的工作。我现在正在将它迁移到VB.net(使用Visual Studio Express 2010)并开始使用OleDb库,但我在速度方面遇到了一个问题。当我试图从一个网络位置打开并迭代一个大约7列2500万行(数据类型主要是双倍数据)的大型表时,大约需要10分钟。当我使用DAO时,我花了大约1.5分钟打开表并浏览所有记录。这是我的应用程序在速度上的一个主要差异,我没有预料

我目前正在迁移一个使用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
我需要对表进行排序,我使用了一个带有ORDERBY子句的SQL语句。我发现,如果没有按顺序排序,它的速度非常快,只是当我排序数据时,与DAO相比,它的速度非常慢。我曾尝试在access数据库中创建一个查询,对记录进行排序,然后调用OleDbCommand对象中SQL语句的查询,但没有帮助。我的问题是,OleDbDataReader是打开大型排序数据集的最佳方法/对象吗


谢谢

可能您需要在涉及的列上创建索引Hanks Steve,我已经为这两个字段编制了索引。如果这是一个问题,那么我希望用DAO库执行类似的操作也会很慢,而且速度相对快得多。我知道DAO是最快的,但差别很大。您可以尝试使用ACE而不是JET,但不要期望太多,如果可能的话,将数据库移动到本地。您真的需要加载2500万行吗?是否可以限制需要缩回的行数?