Bri*_*ter 5 .net sql vb.net arrays
我正在使用VB.NET.
我正在执行一个返回约2500行的选择查询,每行包含7个字段.
我正在使用SqlDataAdapater并使用Select查询(来自本地数据库)返回的单个表填充数据集.(我只执行一次数据检索(见下文),直到数据到达之后我才开始启动StopWatch)
我正在使用for循环遍历该表并使用数据填充对象数组.
这些对象只不过是存储每行数据的简单结构.
只是为了好玩,我这样做了10次才能很好地感受到这需要多长时间...因为我想要的用法将涉及返回250,000行而不是2,500行.
我需要加快速度.
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)
Run Code Online (Sandbox Code Playgroud)
有关从SQL中获取数据的最快方法的任何想法直接进入数组吗?
编辑:结果:以下代码在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)
Run Code Online (Sandbox Code Playgroud)
Edit2: FYI - 返回一个返回250,000个结果的查询,它使用第二组代码在560ms内填充数组.那很快.