想加快我的 vb.net For Every 循环



我正在制作一个网站,我有一个 for 每个循环,需要 2.5 分钟才能运行。

我想知道是否有人知道我如何加快速度。循环中的两个 if 语句都必须保留在那里。

 Protected Sub WebDataGrid1_InitializeRow(sender As Object, e As Infragistics.Web.UI.GridControls.RowEventArgs) Handles WebDataGrid1.InitializeRow
        Dim SqlString As String = ""
        Dim TerrMapTable As New DataTable
        Dim Terr As String = ""
        Dim RgnMgr As String = ""
        Dim Reg As String = ""
        Dim TerrMap As String = ""
        For Each GridRecord As GridRecord In WebDataGrid1.Rows
            Terr = GridRecord.Items.FindItemByKey("ABAN8").Value
            RgnMgr = GridRecord.Items.FindItemByKey("RgnMgr").Value
            If Terr < 9000 Then
                Terr = "T" & Terr
            Else
                Terr = "TA1" & Right(Terr, 2)
            End If
            SqlString = "Select distinct Terr, Region from TerrReg WHERE Terr='" & Terr & "'"
            TerrMapTable = OleFun.GetMyDataTableString(SqlString, 4)
            If TerrMapTable.Rows.Count <> 0 Then
                Reg = TerrMapTable(0)(1)
                TerrMap = "<a href=""/Mapper/Territory_Maps/" & Reg & "/" & Terr & "/" & Terr & "-" & Reg & "-" & "Territory.htm"" target=""_Blank""><b>PIC</b></a>"
                GridRecord.Items.FindItemByKey("TerrMap").Text = TerrMap
            Else
            End If
        Next
    End Sub

InitializeRow 的事件处理程序中,我希望为单行调用它,您正在遍历所有行。 因此,我怀疑您已经将应该线性的操作转换为行数(事件为每行触发一次,并且您仅对该行进行操作(转换为行数二次的操作(对于每一行,您遍历每一行(。

根据事件名称,我认为您根本不应该拥有For Each循环。 看起来您应该从事件参数中获取适当的行并仅对该行进行操作。

这可能更适合代码审查,但这是我的想法。

  • 使用字符串构建连接字符串
  • 不要连接 sql!使用参数。
  • 获取所有唯一的 Terr 并执行一个查询。
  • 数据库查询一定是您的瓶颈。
  • Terr 似乎是数字和字符串的混合体。尝试严格打开选项。

最新更新