.NET - SQL Select - > Array.什么是最快的方式?

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内填充数组.那很快.

pop*_*ter 4

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