Foxtable(狐表)用户栏目专家坐堂 → 新版为何感觉从后台读取数据慢多了


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

主题:新版为何感觉从后台读取数据慢多了

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
新版为何感觉从后台读取数据慢多了  发帖心情 Post By:2022/1/12 13:11:00 [只看该作者]

大师:新版为何感觉从后台读取数据慢多了(sql语句)?

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/12 13:48:00 [只看该作者]

可能新版样式等新增加功能造成的吧

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


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

Dim st As Date = Date.Now

Dim lst1 As New List(of DataRow)
Dim lst2 As New List(of DataRow)
For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第二列 = " & dr("第一列")) Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数


帮助中说执行以上代码0.8秒,目前新版执行8秒。什么情况?慢了10倍??????


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


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

如果是select求行集合,那就更慢了?

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/12 15:08:00 [只看该作者]

请提供实例测试

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2022/1/12 15:10:00 [只看该作者]

我测试了一下,第一列和第二列,都是整数型,分别用foxtable 2019和2022测试,用时都是0.10秒:


Tables("表A").addNew(10000)
For Each r As Row In Tables("表A").Rows
    r("第一列") = rand.Next(1,20000)
    r("第二列") = rand.Next(1,20000)
Next

Dim st As Date = Date.Now
Dim lst1 As New List(of DataRow)
Dim lst2 As New List(of DataRow)
For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第二列 = " & dr("第一列")) Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2022/1/12 16:01:00 [只看该作者]

您是整数,如果是字符串呢?

Tables("表B").addNew(10000)
For Each r As Row In Tables("表B").Rows
    r("第一列") = "2"
    r("第二列") = "2"
Next

Dim st As Date = Date.Now
Dim lst1 As New List(of DataRow)
Dim lst2 As New List(of DataRow)
For Each dr As DataRow In DataTables("表B").DataRows
    If DataTables("表B").Find("第二列 = '" & dr("第一列") & "'") Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next

Output.Show(lst1.Count)
Output.Show(lst2.Count)
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数



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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2022/1/12 16:04:00 [只看该作者]

字符型的话,2022版2.9秒,2019版3.5秒,新版本更快。

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


加好友 发短信
等级:狐神 帖子:5061 积分:13092 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2022/1/12 16:38:00 [只看该作者]

如果字符串较长,应该时间还要长?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2022/1/12 16:44:00 [只看该作者]

按道理是这样的,不过下面的代码,在新版同样不到0.2秒完成,速度还可以:

Tables("表A").addNew(10000)
For Each r As Row In Tables("表A").Rows
    r("第一列") = rand.NextString(16)
    r("第二列") = rand.NextString(16)
Next

Dim st As Date = Date.Now
Dim lst1 As New List(of DataRow)
Dim lst2 As New List(of DataRow)
For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第二列 = '" & dr("第一列") & "'") Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数

 回到顶部