gpt4 book ai didi

.NET-SQL选择->数组。最快的方法是什么?

转载 作者:行者123 更新时间:2023-12-04 00:24:30 24 4
gpt4 key购买 nike

我正在使用VB.NET。

我正在执行一个选择查询,该查询返回大约2500行,每个行包含7个字段。

我正在使用SqlDataAdapater,并使用Select查询(从本地数据库)返回的单个表填充数据集。 (我只执行一次数据检索(请参见下文),直到数据到达后我才启动秒表)

我使用for循环遍历该表,并用数据填充对象数组。

这些对象不过是用于存储每一行​​数据的简单结构。

只是为了好玩,我已经进行了十次这样的操作,以使人感觉这花费了多长时间……因为我想要的用法将包括返回250,000行而不是返回2500行。

我需要加快速度。

Dim SW As New Stopwatch
SW.Start()
For j As Integer = 0 To 10
Dim T As DataTable = ds.Tables(0)
Dim BigArray(0 To T.Rows.Count - 1) As MyObj
For i As Integer = 0 To T.Rows.Count - 1
BigArray(i) = New MyObj
BigArray(i).A = T(i)(0)
BigArray(i).B = T(i)(1)
BigArray(i).C = T(i)(2)
BigArray(i).D = T(i)(3)
BigArray(i).E = T(i)(4)
BigArray(i).F = T(i)(5)
BigArray(i).G = T(i)(6)
Next
Next
MsgBox(SW.ElapsedMilliseconds)

有什么最快的方法将数据从SQL Select直接获取到数组中的想法吗?

编辑:结果:以下代码在4毫秒内执行,而上述外循环的单次迭代所花费的时间为2050毫秒。
cmd = New SqlCommand("select stuff", conn)
reader = cmd.ExecuteReader()
Dim SW As New Stopwatch
SW.Start()
Dim BigArray(0 To RowCount - 1) As MyObj
Dim i As Integer = 0
While (reader.Read())

BigArray(i) = New MyObj
BigArray(i).A= reader(0)
BigArray(i).B= reader(1)
BigArray(i).C= reader(2)
BigArray(i).D= reader(3)
BigArray(i).E= reader(4)
BigArray(i).F= reader(5)
BigArray(i).G= reader(6)
i += 1
End While
MsgBox(SW.ElapsedMilliseconds)

编辑2:仅供引用-运行查询返回250,000个结果,并使用第二组代码在560毫秒内填充数组。太快了

最佳答案

不要浏览数据表。使用SqlReader一次读取每一行,创建对象并填充它。 SqlCommand.ExecuteReader应该可以帮助您入门。

关于.NET-SQL选择->数组。最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com