【发布时间】:2017-06-29 13:01:33
【问题描述】:
我正在制作一个网站,我有一个 for each 循环,需要 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
【问题讨论】:
-
一开始你为什么要遍历每一行?
-
这个问题适合codereview.stackexchange.com...
-
看看这个SO Q&A。
-
您不应该在每次迭代中运行查询,我怀疑这是您唯一的问题。尝试先获取所有数据,然后从内存中获取所需的数据。您的表有多大,一次查询需要多长时间?更好的是,显示执行计划。
标签: vb.net infragistics