Foxtable(狐表)用户栏目专家坐堂 → 求助表达式 和子表加载速度


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

主题:求助表达式 和子表加载速度

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


加好友 发短信
等级:童狐 帖子:298 积分:2605 威望:0 精华:0 注册:2013/5/22 7:16:00
求助表达式 和子表加载速度  发帖心情 Post By:2020/2/19 22:57:00 [只看该作者]

咨询一下老师,订单主表和订单明细表关联,订单主表里面有两个表达式列,查询的主表的时候同时加载了子表,速度很慢很慢,如果把主表的表达式列去掉,加载子表很快。或者不去掉表达式列,只加载主表,不加载子表,速度也很快。能不能不去掉表达式列,同时加载子表,把速度提升上去。

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/20 9:48:00 [只看该作者]

上传实例看看。估计是多个地方的表达式列都触发了计算,现成了链式反应。

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


加好友 发短信
等级:童狐 帖子:298 积分:2605 威望:0 精华:0 注册:2013/5/22 7:16:00
  发帖心情 Post By:2020/2/20 22:33:00 [只看该作者]

附件上传老师指点

[此贴子已经被作者于2020/2/21 22:07:45编辑过]

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 11:05:00 [只看该作者]

是会收到表达式的影响的。可以这样

Dim s2 As String = DataTables("用户资料").DataCols("合计金额").Expression
Dim s3 As String = DataTables("用户资料").DataCols("到期时间").Expression
DataTables("用户资料").DataCols("合计金额").Expression = ""
DataTables("用户资料").DataCols("到期时间").Expression = ""

DataTables("用户交费记录").LoadFilter = "用户账号 In (" & ids & ")"
DataTables("用户交费记录").Load()

DataTables("用户资料").DataCols("合计金额").Expression = s2
DataTables("用户资料").DataCols("到期时间").Expression = s3

另外,感觉这个查询里的加载完全没有必要啊,每次都是加载全部的数据,没看出来有什么意义。要的效果不应该是只加载符合条件的数据吗?那么应该这样:
Dim s As WinForm.ComboBox = e.Form.Controls("cxfs")
Dim cx As WinForm.TextBox = e.Form.Controls("srcx")
Dim filter As String = ""
Select Case s.Text
    Case "姓名查找"
        filter = "用户名称 like '%" & cx.text & "%'"
    Case "账号查找"
        filter = "用户账号 Like '%" & cx.text & "%' "
    Case "号线查找"
        filter= "号线地址 Like '%" & cx.text & "%'"
    Case "手机查找"
        filter = "号码1 like '%" & cx.text & "%' or 号码2 like '%" & cx.text & "%' or 号码3 like '%" & cx.text & "%'  "'
    Case "地址查找"
        filter = "装机地址 Like '%" & cx.text & "%'"
    Case Else
        MessageBox.Show("未查到数据")
        Return
End Select
DataTables("用户资料").LoadFilter = filter
DataTables("用户资料").Load

Dim ids As String = ""
For Each dr As DataRow In DataTables("用户资料").DataRows
    ids = ids & ",'" & dr("用户账号") & "'"
Next

If  ids > ""
    ids= ids.Trim(",")
    DataTables("用户交费记录").LoadFilter = "用户账号 In (" & ids & ")"
Else
    DataTables("用户交费记录").LoadFilter = "false"
End If
DataTables("用户交费记录").Load()

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


加好友 发短信
等级:童狐 帖子:298 积分:2605 威望:0 精华:0 注册:2013/5/22 7:16:00
  发帖心情 Post By:2020/2/21 22:48:00 [只看该作者]

谢谢老师指点,按照老师的指点不但功能实现了,速度还飞快。


 回到顶部