Foxtable(狐表)用户栏目专家坐堂 → 查询超时异常请教


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

主题:查询超时异常请教

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


加好友 发短信
等级:六尾狐 帖子:1368 积分:12189 威望:0 精华:0 注册:2012/3/5 11:32:00
查询超时异常请教  发帖心情 Post By:2023/4/14 11:25:00 [只看该作者]

 用foxtable 做数据采集 ,

采集的数量量大  ,目前这个表 "YW_生产参数"  已经超过300万条记录

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:mmsglog.txt

数据保存的时候,现在经常提示异常 , 数据加载失败!

    For  I As Integer  = 0 To values2.length -1
        Dim drf2 As DataRow = DataTables("YW_模具参数明细").SQLFind("参数点位 = '" & values2(i).Split(":")(0) & "' and 主表guid = '" & DataTables("表C").DataRows(8)("数值") & "' and 是否读取 = '是' and 采集频率 = '一模一回'")
        
        If drf2 IsNot Nothing Then
            Dim dra As DataRow =  DataTables("YW_生产参数").AddNew()
            last_identify = dra("_identify")
            dra("guid") = Guid.NewGuid.ToString
            dra("创建人guid") = drf2("主表guid")
            dra("创建日期") = Date.Now
            dra("记录时间") = Date.now
            dra("机台号") = drf("机台号")
            dra("机台名称") = drf("机台名称")
            dra("机台guid") = drf("guid")
            dra("模具名称") = dr_now2("模具名称")
            dra("模具编号") = dr_now2("模具编号")
            dra("模具guid") = dr_now2("guid")
            dra("参数名称") = drf2("参数名称")
            dra("参数点位") = drf2("参数点位")
    DataTables("YW_生产参数").save

代码应该是没有问题的.

但不知道怎么处理好
[此贴子已经被作者于2023/4/14 12:13:11编辑过]

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


加好友 发短信
等级:狐精 帖子:3209 积分:21331 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/4/14 11:33:00 [只看该作者]

300万用sqlfind,服务器估计遭不住,可以用sql语句,条件加载的形式,先查询符合条件的行,在更新符合条件的行。
可以看看临时表数据更新的方式
 
[此贴子已经被作者于2023/4/14 11:35:33编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/14 11:39:00 [只看该作者]

1、"YW_生产参数"不要加载数据:http://www.foxtable.com/webhelp/topics/1268.htm,或者改为分页加载

新增的数据保存后,使用下面方法加载空表,保持不加载数据
DataTables("YW_生产参数").loadfilter = "[_identify] is null"
DataTables("YW_生产参数").load

2、"YW_模具参数明细"数据有多少?如果在1W以下建议全部加载,使用find查询,不需要使用sqlfind

3、改为使用SqlServer,参考这种方法批量新增数据
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=147288
或者:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=159738&replyID=&skin=1

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


加好友 发短信
等级:六尾狐 帖子:1368 积分:12189 威望:0 精华:0 注册:2012/3/5 11:32:00
  发帖心情 Post By:2023/4/14 12:21:00 [只看该作者]

谢谢,2位回复


另外蓝版问下

通过

Dim cmd As new SQLCommand
cmd
.ConnectionName = "数据源名称"
cmd
.CommandText = "Insert Into 订单 (客户, 日期, 订单编号) Values(?,?,?)"
cmd
.Parameters.Add("@日期","01")
cmd
.Parameters.Add("@客户",Date.Today)
cmd
.Parameters.Add("@p",100)
cmd
.ExecuteNonQuery

这种方式



for

写在这里

next
里面嵌套进去 这方式 行否?  是否是最原始的方法呢
[此贴子已经被作者于2023/4/14 12:28:00编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/14 13:31:00 [只看该作者]

自己试试不就知道了。这种方式插入数据和使用AddNew()新增保存效率其实没有多少区别

 回到顶部