Foxtable(狐表)用户栏目专家坐堂 → 关于数据查询效率


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

主题:关于数据查询效率

帅哥,在线噢!
scofields
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
关于数据查询效率  发帖心情 Post By:2016/10/25 17:41:00 [显示全部帖子]

狐爸,用Datatable的Load查询数据,我发现,少量数据就不行了,大量数据就很吃力。下面这段代码我写时没有考虑到大数据,查询起来相当吃力,查询10000行数据时就不行,代码是针对全表内容查询的,我想提升查询效率,有木有办法呢?能不能帮忙改成后台查找?
Dim r As Row = Tables("发运通知单").Current
 Dim dt As DataTable = DataTables("发运通知单")
 Dim str As String = e.form.controls("Textbox3").Text
 If str = "" Then
 MessageBox.Show ("请输入完整的发货密钥后再查询","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
 Return
 Else
 Dim filter As String = "1=2"
 For Each c As Col In CurrentTable.Cols
    filter &= " or convert(" & c.name & ",'System.String') like '%" & str & "%'"
     
 Next
Dim count As Integer = dt.Compute("count(客户名)", filter)
 If count > 0 Then
    Tables(dt.name).Filter = filter
     e.Form.controls("TextBox5").text= r("次级客户")
     e.Form.controls("TextBox6").text= r("品种")
     e.Form.controls("TextBox7").text= r("包装")
     e.Form.controls("TextBox4").text=  r("客户名") 
     ClipBoard.SetText(e.Form.controls("Textbox4").text)   
     ElseIf count = 0 Then
     Tables(dt.name).Filter = filter
     MessageBox.Show ("没有查询到满足条件的记录","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
     ClipBoard.SetText(0)   
     End If
 CurrentTable.Filter = filter

 回到顶部
帅哥,在线噢!
scofields
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
  发帖心情 Post By:2016/10/25 17:55:00 [显示全部帖子]

分页加载默认是加载后台所有数据,在实际操作中,我的数据是随时要更新,而且数据量庞大,有没有办法?把代码写入按钮中,直接后台查找?

 回到顶部
帅哥,在线噢!
scofields
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
  发帖心情 Post By:2016/10/25 18:05:00 [显示全部帖子]

点击刷新后,所有数据都出来了。不点击的话,确实是只加载了少部分数据。另外既然是分页,就是Tables,不是DataTable,我那代码好像就只从Tables里查询。蓝老师,后来筛选的系统命令是啥?

 回到顶部