Я получаю набор из более чем 40 тысяч записей. Требуется выделить в таблице записи, которые существуют или не существуют в нашей базе данных.
Итак, мы выбрали каждую запись и сравнили с таблицей базы данных с помощью процедуры.
If exists(Select FunctionalLocation from EngineeringData where
FunctionalLocation = @Asset_Number
)
Begin
Select 1
End
Else
Begin
Select 0
End
END
но это занимает так много времени, а иногда и таймаут.
Можно ли каким-либо образом оптимизировать этот код?
For k = 0 To gv_InfoFunctionalLocation.Rows.Count - 1
If k < 50000 Then ' to test only
Dim row = gv_InfoFunctionalLocation.Rows(k)
Dim RowEffect As Integer
Dim dSetReturn As New DataSet
ParamValue(0) = row.Cells(1).Text
ParamValue(1) = row.Cells(4).Text
dSetReturn = Func.SP_ReturnDataset(con, "[dbo].[USP_Check_FunctionalLocations]", True, ParamName, ParamType, ParamValue)
RowEffect = dSetReturn.Tables(0).Rows(0).Item(0)
Dim gRow As GridViewRow = gv_InfoFunctionalLocation.Rows(k)
Dim cBox As CheckBox = CType(gRow.FindControl("chkSelect"), CheckBox)
If RowEffect = 0 Then
'dtFL.Rows(k).Cells("Status").Value = True
'dtFL.Rows(k).ReadOnly = True
gv_InfoFunctionalLocation.Rows(k).BackColor = System.Drawing.Color.Tomato
cBox.Checked = True
Else
gv_InfoFunctionalLocation.Rows(k).BackColor = System.Drawing.Color.YellowGreen
cBox.Checked = False
End If
If cBox.Checked = True Then
btnImportFL.Enabled = True
btnImportFL.BackColor = Drawing.Color.Navy
End If
End If
Next
Есть ли быстрое решение, поскольку у нас мало времени и ресурсов?