Foxtable(狐表)用户栏目专家坐堂 → find 效率问题


  共有1896人关注过本帖树形打印复制链接

主题:find 效率问题

帅哥哟,离线,有人找我吗?
xujie80
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:350 积分:3412 威望:0 精华:0 注册:2015/5/12 15:33:00
find 效率问题  发帖心情 Post By:2016/7/21 10:33:00 [只看该作者]

员工资料有8万多条数据,粮农直补有万多条数据

执行下列语句:

Dim dt1 As DataTable = DataTables("员工资料")

Dim dt2 As DataTable = DataTables("粮农直补")

Dim i1 As Integer = 0

Dim i2 As Integer = 0

For Each dr As DataRow In dt2.DataRows

    Dim fdr As DataRow = dt1.find("身份证号 = '" & dr("身份证号") & "'")

    If fdr IsNot Nothing Then

        fdr("姓名")=  dr("姓名")

i1 = i1+1

 

    Else

        Dim ndr As DataRow = DT1.ADDNEW()

        ndr("身份证号") = dr("身份证号")

        ndr("姓名") = dr("姓名")

i2 = i2 +1

    End If

Next

PopMessage("共更新了" & i1 & "条记录" & vbcrlf & "新增了" & i2 & "条记录","通知", PopIconEnum.OK, 5)


结果虽然在运行,但是效率很低,查看运行情况


此主题相关图片如下:111.png
按此在新窗口浏览图片

有什么办法提高效率?


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/21 10:45:00 [只看该作者]

Dim dt1 As DataTable = DataTables("员工资料")
Dim dt2 As DataTable = DataTables("粮农直补")

Dim i1 As Integer = 0
Dim i2 As Integer = 0

Dim 找到的行 As new Dictionary(Of DataRow, DataRow)
Dim 增加的行 As new List(Of DataRow)

For Each dr As DataRow In dt2.DataRows
   
    Dim fdr As DataRow = dt1.find("身份证号 = '" & dr("身份证号") & "'")
   
    If fdr IsNot Nothing Then
        找到的行.Add(dr, fdr)
        i1 = i1+1
    Else
        增加的行.Add(dr)
        i2 = i2 +1
    End If
   
Next
For Each key As DataRow In 找到的行.Keys
    找到的行(key)("姓名") = key("姓名")
Next
For Each dr As DataRow In 增加的行
    Dim ndr As DataRow = DT1.ADDNEW()
   
    ndr("身份证号") = dr("身份证号")
   
    ndr("姓名") = dr("姓名")
next


PopMessage("共更新了" & i1 & "条记录" & vbcrlf & "新增了" & i2 & "条记录","通知", PopIconEnum.OK, 5)


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/21 10:46:00 [只看该作者]


 回到顶部