Foxtable(狐表)用户栏目专家坐堂 → SQLFind 数据量大非常慢,求高手解答


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

主题:SQLFind 数据量大非常慢,求高手解答

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


加好友 发短信
等级:幼狐 帖子:115 积分:1014 威望:0 精华:0 注册:2014/11/3 20:24:00
SQLFind 数据量大非常慢,求高手解答  发帖心情 Post By:2016/11/29 12:33:00 [只看该作者]

代码如下

DataColChanged 事件


If e.DataCol.Name = "运单编号"  Then '如果内容发生变动的是产品列
    If e.NewValue Is Nothing Then '如果新值是空白,也就是产品列的内容为空
      e.DataRow("客户名称") = Nothing

    Else
        Dim dr As DataRow
        Dim N As  Date = e.DataRow("扫描日期")
        dr = DataTables("top_trade").sqlFind("[top_out_sid] = '" & e.DataRow("运单编号") & "'")
        If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("客户名称") = dr("top_seller_nick") 
          e.DataRow("年月")=N.year & "年" & N.Month & "月" 
Else
e.DataRow("客户名称") = Nothing

        End If
    End If
End If

以上代码 单条运行还行   数据量几百上千条的时候   运行非常缓慢  
但是   把   dr = DataTables("top_trade").sqlFind("[top_out_sid] = '" & e.DataRow("运单编号") & "'")  中的 sqlFind改为  Find  后 就很快


求高手 解答

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


加好友 发短信
等级:幼狐 帖子:115 积分:1014 威望:0 精华:0 注册:2014/11/3 20:24:00
  发帖心情 Post By:2016/11/29 12:37:00 [只看该作者]

在线急等

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/29 13:59:00 [只看该作者]

 不要循环执行sqlfind函数,如果要大批量执行,还不如把表数据全部加载出来,再直接find。

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


加好友 发短信
等级:幼狐 帖子:115 积分:1014 威望:0 精华:0 注册:2014/11/3 20:24:00
如果数据量几万条 这样的话加载起来 软件速度会非常慢!  发帖心情 Post By:2016/11/29 14:26:00 [只看该作者]

如果数据量几万条 这样的话加载起来 软件速度会非常慢!

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


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

你是重置列的时候慢吧? 几千行的话,就是几千次SQLFind,肯定慢的。

如果经常要重置,就加载经常要查询的数据表,改用Find查询,加载几万行没有关系。

 回到顶部