使用数据库中的存储过程获取大约 200MB 的大数据。以前使用 DataTable.Load() 方法在 DataTable 中填充此数据。但它导致了性能问题,并且由于数据大小,DataTable 没有响应。
Using reader As DbDataReader = cmdHelper.ExecuteReader(CommandBehavior.CloseConnection)
Using rstResult As New DataTable()
rstResult.Locale = CultureInfo.InvariantCulture
rstResult.Load(reader)
Return rstResult
End Using
End Using
但是现在为了提高性能开始直接使用DataReader,但是由于DatReader是连接架构,DB连接会一直打开直到BusinessLogic完成。
Dim cnHelper As New DbConnectionHelper(_strDBConnection)
Dim cmdHelper As DbCommandHelper = cnHelper.CreateCommandHelper(strSP)
cmdHelper.Command.CommandType = CommandType.StoredProcedure
Dim reader As DbDataReader = cmdHelper.ExecuteReader(CommandBehavior.CloseConnection)
Return reader
所以,我不想使用 DatReader,因为 DB 连接将在执行 BusineesLogic 之前打开。
在这种情况下,是否有任何替代方法可以在不使用 DataReader 的情况下提高性能?