以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这样分次处理也会出现错误?!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124492)

--  作者:kylin
--  发布时间:2018/9/7 11:46:00
--  这样分次处理也会出现错误?!
.NET Framework 版本:2.0.50727.8825
Foxtable 版本:2018.8.30.1
错误所在事件:加载[HstDtl]失败!
详细错误信息:
查询超时已过期

有关代码如下:IDDtl表中的数据是HstDtl中ID唯一值的信息,HstDtl中每一个ID的相关记录不会超过100行
For i As Integer = 6272450 To 8974340
    For k As Integer = 1 To 2702       
        Dim m,n As Integer
        m = 6272449 + (k-1) * 1000 + 1
        n = 6272449 + k * 1000
        DataTables("IDDtl").LoadFilter = "[_Identify] >= " & m & " And [_Identify] <= " & n
        DataTables("IDDtl").Load
        For Each dr As Row In Tables("IDDtl").Rows
            Dim id As String = dr("ID")
            output.Show(id)
            DataTables("HstDtl").LoadFilter = "[ID] = \'" & id & "\'"
            DataTables("HstDtl").Load
            Tables("HstDtl").Sort = "出货日期"
            Dim t As Integer = Tables("HstDtl").Rows.Count
            Dim r As Row = Tables("HstDtl").Rows(n-1)
            r("Lst") = t-1
            DataTables("HstDtl").ReplaceFor("TJ",True)
            DataTables("HstDtl").Save
        Next
    Next
Next
MessageBox.Show("OK")

--  作者:有点甜
--  发布时间:2018/9/7 12:03:00
--  

为什么要循环执行load?不能直接用sql后台处理?

 

http://www.foxtable.com/webhelp/scr/2724.htm

 

有可能是多次循环多次load的时候,导致出问题。


--  作者:kylin
--  发布时间:2018/9/7 12:57:00
--  
为什么要这样的?指引到问题的关键
任何有关于SQLCommand、还有DataTable的SQL方法,都会出现同样的错误,因此不得已采用以上的分批分次小量加载。
因为在这之前两三个版本中,我都一次性加载了300万行的数据,都没有问题的啊!
所以,我可能猜想都是不是这个版本有问题?!希望我的设想是错误的!

--  作者:有点甜
--  发布时间:2018/9/7 14:43:00
--  

查询超时已过期,说明是查找的时候,比较耗时,照成超时。

 

1、你弹出一下对应的条件是什么,执行什么条件的时候查询超时;

 

2、是不是你数据库数据太多,导致索引循坏了,导致现在查询耗时?