Foxtable(狐表)用户栏目专家坐堂 → GetValues


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

主题:GetValues

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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
GetValues  发帖心情 Post By:2021/7/15 13:51:00 [只看该作者]

大师:劳驾测试GetValues的效率,回到解放前了,慢的像乌龟爬!
1万行的遍列获得,要几佰秒,用select只要0.5秒!

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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 14:12:00 [只看该作者]

这能叫升级,能叫修复?举世没有,哪有这种道理,项目都要修改。

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/15 14:15:00 [只看该作者]

select不需要去重,肯定是比GetValues快的。但是我测试返回10000行也只需要44毫秒。至于取数后的遍历就和GetValues没有关系了吧

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 14:36:00 [只看该作者]

如果以下代码改为GetValues方法,2万行测试要297秒,下面的代码只要0.6秒。


Dim st As Date = Date.Now


Dim Dic As new Dictionary(of DataRow,String)


For Each dr As DataRow In DataTables("dtpzzb").DataRows

    Dim jh As new List(of DataRow)

    Dim jh1 As new List(of String)

    If dr("pzzb9") <> 0  Then

        jh = DataTables("dtpzzb").Select(" pzzb8 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

        For Each tr As DataRow In jh

            If jh1.Contains(tr("pzzb12")) = False  Then

                jh1.Add(tr("pzzb12"))

            End If

        Next

        Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

    ElseIf dr("pzzb8") <> 0  Then

        jh = DataTables("dtpzzb").Select(" pzzb9 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

        For Each tr As DataRow In jh

            If jh1.Contains(tr("pzzb12")) = False  Then

                jh1.Add(tr("pzzb12"))

            End If

        Next

        Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

                

    End If

    

Next



MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/15 14:40:00 [只看该作者]

贴出改之后的代码

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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 14:48:00 [只看该作者]

Dim st As Date = Date.Now


Dim Dic As new Dictionary(of DataRow,String)


For Each dr As DataRow In DataTables("dtpzzb").DataRows

    

    Dim jh1 As new List(of String)

    If dr("pzzb9") <> 0  Then

jh1 =  DataTables("dtpzzb").GetValues("pzzb12"," pzzb8 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

                Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

    ElseIf dr("pzzb8") <> 0  Then

        jh1 =  DataTables("dtpzzb").GetValues("pzzb12"," pzzb9 <> 0 and pzzb142 = '" & dr("pzzb142") & "'")

               Dim sz() As String

        sz = jh1.ToArray

        Dim zfc As String

        zfc = String.Join(";",sz)

        dic.Add(dr,zfc)

                

    End If

    

Next



MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")



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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 15:09:00 [只看该作者]

测试无数遍了,真没意思,所有的代码都要更改!老版测试没有问题,充分证明,每次升级根本没有进行有效的测试!
另外友情提醒:
项目代码测试数据,最好要用中等数据20000条记录以上,否则好玩了。搞死你没商量!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/15 15:22:00 [只看该作者]

请上传实例说明。

我测试刚好相反,使用select花费的时间是GetValues的3倍

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


加好友 发短信
等级:狐神 帖子:4649 积分:33907 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2021/7/15 15:49:00 [只看该作者]

重出江湖了,江湖又开始沸腾了

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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2021/7/15 15:51:00 [只看该作者]

不可能,多少行数据测试的?刚测试用了320秒。


 回到顶部
总数 24 1 2 3 下一页