以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQLFind 数据量大非常慢,求高手解答  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93451)

--  作者:celchentao
--  发布时间:2016/11/29 12:33:00
--  SQLFind 数据量大非常慢,求高手解答
代码如下

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
--  发布时间:2016/11/29 12:37:00
--  
在线急等
--  作者:有点色
--  发布时间:2016/11/29 13:59:00
--  
 不要循环执行sqlfind函数,如果要大批量执行,还不如把表数据全部加载出来,再直接find。
--  作者:celchentao
--  发布时间:2016/11/29 14:26:00
--  如果数据量几万条 这样的话加载起来 软件速度会非常慢!
如果数据量几万条 这样的话加载起来 软件速度会非常慢!
--  作者:狐狸爸爸
--  发布时间:2016/11/29 14:43:00
--  
你是重置列的时候慢吧? 几千行的话,就是几千次SQLFind,肯定慢的。

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