优化SQL数据阅读器

时间:2009-08-10 04:40:15

标签: asp.net sql vb.net optimization

我正在使用SQl数据读取器从SQL数据库中获取值。

语言VB.NET

将数据输入阅读器后,我运行了一个while循环

   While reader.Read

      If reader.HasRows() Then

/* Proessing of data */

      End If

  End While

我观察到while循环需要花费大量时间来处理,因为有很多行。 有没有更好的实施方式。

请评论: 我应该将SQlDataReader数据放入arraylists,然后使用arraylists处理数据吗?

ALGO:

 While reader.read

    /* Put data into Arraylists */

    End While

    for(arraylist row count)
    /*Process data*/
    end for

3 个答案:

答案 0 :(得分:1)

您可以将循环逻辑放入TSQL中基于SET的逻辑吗?

因此,不是迭代代码中的每一行,而是让RDBMS在TSQL中执行它。这就是RDBMS的设计和擅长的目标。

请告诉我们您在循环中所做的工作以及用于生成数据集的TSQL。

答案 1 :(得分:1)

检查数据读取器是否在循环内部有行是没有意义的。如果没有行,Read方法返回false,因此它不会进入循环,如果有行,HasRows方法返回true,即使您已读取所有行。删除它会节省一些时间,但几乎不可能:

While reader.Read

  /* Proessing of data */

End While

在处理之前将所有数据读入列表不会给您带来更好的性能。相反,您将使用大量可能更好地用于其他内容的内存。

答案 2 :(得分:0)

不要以为从数据库中读取数据需要花费很多时间 您可以测量VB代码块中经过的时间,如:

startTime = Now
....
stopTime = Now
elapsedTime = stopTime.Subtract(startTime)

先测量,然后优化真正需要时间的东西。

(如果您使用Team Studio,可以尝试使用内置的分析器。)