ASP.NET-WebApplication에 GridView가 있습니다.
간단히 말해 GridView에는 GUID가있는 열과 확인란이있는 열이 있습니다.
GridView 위에 "Update selected entries
"이라는 버튼이 있습니다.이 버튼은 잘 체크 된 항목을 업데이트합니다.
나는이 같은 문자열의 체크 항목을 수집 :
CHARINDEX를 사용하여 선택된 항목을 업데이트하십시오.
Dim sAllTheIDs As String = ""
For Each dRow As GridViewRow In myGridView.Rows
If dRow.RowType = DataControlRowType.DataRow Then
If DirectCast(dRow.FindControl("myCheckBox"), CheckBox).Checked Then
sAllTheIDs &= myGridView.DataKeys(dRow.RowIndex).Value.ToString() & ", "
End If
End If
Next
'remove the ", " to make it a valid parameter
If sAllTheIDs.Length > 0 Then
sAllTheIDs = sAllTheIDs.Remove(sAllTheIDs.Length - 2, 2)
End If
다음과 같습니다 자체가 저장 프로 시저로 수행되는 upadte :
declare @sSQL nvarchar(max)
set @sSQL = 'UPDATE dbo.myTable ' +
'SET myColumn = myValue ' +
'WHERE CHARINDEX(CAST(myGUID as nvarchar(50)),@sAllTheIDs) > 0 '
exec sp_executesql @sSQL, N'@sAllTheIDs as nvarchar(4000)', @sAllTheIDs
이 작동하는 것 같다 괜찮 으면 좋겠지 만 30 개 이상의 GUID가있는 경우 기본 제한 시간 인 30 초 (50 개 항목 업데이트에는 약 1 분 소요)를 초과합니다.
상황이 이미 성능 증가했다 :/SET NOCOUNT OFF
- 생성 된 인덱스를; 나는 그것의 실행 계획을 보았다
VB.NET에서 SP (.CommandText = "dbo.sp_UpdateEntries"
)를 호출하고 단계 Clustered Index Update
는 약 60 %의 동작을 취 것으로 보인다 경우에도 내 테이블 dbo.
등을 사용하여
이 작업의 성능을 어떻게 향상시킬 수 있습니까?
CHARINDEX
을 올바르게 사용하고 있습니까?
감사합니다. 이것은 좋은 아이디어입니다. 시도해보십시오! – seph