以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]父表与子表同步加载 ,in 语法非常慢!--已解决 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42649) |
-- 作者:jnletao -- 发布时间:2013/11/18 12:05:00 -- [求助]父表与子表同步加载 ,in 语法非常慢!--已解决 由于要经常更新关联订单的相关所有表,所以 用in 语法代入很多订单号 OrderID IN (\'ACT201309-001\', \'ACT201309-002\', \'ACT201309-003\', \'ACT201309-004\', \'ACT201309-005\', \'ACT201309-006\', \'ACT201309-007\', \'ACT201309-008\', \'ACT201309-009\', \'ACT201309-010\', \'ACT201309-011\', \'ACT201309-012\', \'ACT201309-013\', \'ACT201309-014\', \'ACT201309-015\', \'ACT201309-016\', \'ACT201309-017\', \'ACT201309-018\', \'ACT201309-019\', \'ACT201309-020\', \'ACT201309-021\', \'ACT201309-023\', \'ACT201309-024\', \'ACT201309-025\', \'ACT201310-001\', \'ACT201310-002\', \'ACT201310-003\', \'ACT201310-004\', \'ACT201310-005\', \'ACT201310-006\', \'ACT201310-007\', \'ACT201310-008\', \'ACT201310-009\', \'ACT201310-010\', \'ACT201310-011\', \'ACT201310-012\', \'ACT201310-013\', \'ACT201310-014\', \'ACT201310-015\', \'ACT201310-016\', \'ACT201310-017\', \'ACT201310-018\', \'ACT201310-019\', \'ACT201310-020\', \'ACT201310-021\', \'ACT201310-022\', \'ACT201310-023\', \'ACT201310-024\', \'ACT201310-025\', \'ACT201310-026\', \'ACT201310-027\', \'ACT201310-028\', \'ACT201310-029\', \'ACT201310-030\', \'ACT201310-031\', \'ACT201310-032\', \'ACT201310-033\', \'ACT201310-034\', \'ACT201310-035\', \'ACT201310-036\', \'ACT201310-037\', \'ACT201310-038\', \'ACT201310-039\', \'ACT201310-040\', \'ACT201310-041\', \'ACT201310-042\') DataTables("子表").LoadFilter = "OrderID In (" & ids & ")" …………… 结果发现子表更新很慢,请问大家有什么好方法没有?
[此贴子已经被作者于2013-11-19 15:07:32编辑过]
|
-- 作者:Bin -- 发布时间:2013/11/18 12:08:00 -- 1.你加载这么多个表,速度肯定不会很理想 3.检查是否网络问题导致加载慢 |
-- 作者:jnletao -- 发布时间:2013/11/18 13:29:00 -- 刚才测试下时间 BagRegList表 2145条记录, 载入用时8秒 OrderProductProcess表 196条记录, 载入用时17秒 怎么记录少反而用时这么长? Dim st As Date = Date.Now DataTables("BagRegList").LoadFilter = "OrderID In (\'ACT201309-001\', \'ACT201309-002\', \'ACT201309-003\', \'ACT201309-004\', \'ACT201309-005\', \'ACT201309-006\', \'ACT201309-007\', \'ACT201309-008\', \'ACT201309-009\', \'ACT201309-010\', \'ACT201309-011\', \'ACT201309-012\', \'ACT201309-013\', \'ACT201309-014\', \'ACT201309-015\', \'ACT201309-016\', \'ACT201309-017\', \'ACT201309-018\', \'ACT201309-019\', \'ACT201309-020\', \'ACT201309-021\', \'ACT201309-023\', \'ACT201309-024\', \'ACT201309-025\', \'ACT201310-001\', \'ACT201310-002\', \'ACT201310-003\', \'ACT201310-004\', \'ACT201310-005\', \'ACT201310-006\', \'ACT201310-007\', \'ACT201310-008\', \'ACT201310-009\', \'ACT201310-010\', \'ACT201310-011\', \'ACT201310-012\', \'ACT201310-013\', \'ACT201310-014\', \'ACT201310-015\', \'ACT201310-016\', \'ACT201310-017\', \'ACT201310-018\', \'ACT201310-019\', \'ACT201310-020\', \'ACT201310-021\', \'ACT201310-022\', \'ACT201310-023\', \'ACT201310-024\', \'ACT201310-025\', \'ACT201310-026\', \'ACT201310-027\', \'ACT201310-028\', \'ACT201310-029\', \'ACT201310-030\', \'ACT201310-031\', \'ACT201310-032\', \'ACT201310-033\', \'ACT201310-034\', \'ACT201310-035\', \'ACT201310-036\', \'ACT201310-037\', \'ACT201310-038\', \'ACT201310-039\', \'ACT201310-040\', \'ACT201310-041\', \'ACT201310-042\')" DataTables("BagRegList").Load() MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") |
-- 作者:lihe60 -- 发布时间:2013/11/18 13:55:00 -- 以下是引用jnletao在2013-11-18 12:05:00的发言:
由于要经常更新关联订单的相关所有表,所以 用in 语法代入很多订单号 OrderID IN (\'ACT201309-001\', \'ACT201309-002\', \'ACT201309-003\', \'ACT201309-004\', \'ACT201309-005\', \'ACT201309-006\', \'ACT201309-007\', \'ACT201309-008\', \'ACT201309-009\', \'ACT201309-010\', \'ACT201309-011\', \'ACT201309-012\', \'ACT201309-013\', \'ACT201309-014\', \'ACT201309-015\', \'ACT201309-016\', \'ACT201309-017\', \'ACT201309-018\', \'ACT201309-019\', \'ACT201309-020\', \'ACT201309-021\', \'ACT201309-023\', \'ACT201309-024\', \'ACT201309-025\', \'ACT201310-001\', \'ACT201310-002\', \'ACT201310-003\', \'ACT201310-004\', \'ACT201310-005\', \'ACT201310-006\', \'ACT201310-007\', \'ACT201310-008\', \'ACT201310-009\', \'ACT201310-010\', \'ACT201310-011\', \'ACT201310-012\', \'ACT201310-013\', \'ACT201310-014\', \'ACT201310-015\', \'ACT201310-016\', \'ACT201310-017\', \'ACT201310-018\', \'ACT201310-019\', \'ACT201310-020\', \'ACT201310-021\', \'ACT201310-022\', \'ACT201310-023\', \'ACT201310-024\', \'ACT201310-025\', \'ACT201310-026\', \'ACT201310-027\', \'ACT201310-028\', \'ACT201310-029\', \'ACT201310-030\', \'ACT201310-031\', \'ACT201310-032\', \'ACT201310-033\', \'ACT201310-034\', \'ACT201310-035\', \'ACT201310-036\', \'ACT201310-037\', \'ACT201310-038\',
\'ACT201310-039\', \'ACT201310-040\', \'ACT201310-041\', \'ACT201310-042\') DataTables("子表").LoadFilter = "OrderID In (" & ids & ")" ……………
结果发现子表更新很慢,请问大家有什么好方法没有?
[此贴子已经被作者于2013-11-18 12:06:20编辑过] 不明白代码为什么这么长 |
-- 作者:jnletao -- 发布时间:2013/11/18 13:59:00 -- 我代码里放的是变量,为了演示方便 才把变量内容写出来 的。 其实 我的的代码意图是 载入最近的60个订单及其相关的子表,它相关的子表有15个。
|
-- 作者:Bin -- 发布时间:2013/11/18 15:00:00 -- 注译所有表事件 慢慢排查看看. 应急方案有 利用SQLCOMMAND查询出这个表.然后赋值给要加载的表 Tables("要加载的表名").DataSource =dt
|
-- 作者:pc005637 -- 发布时间:2013/11/18 17:57:00 -- 回复:(jnletao)[求助]父表与子表同步加载 ,in 语... 的确很慢,主要是在加载子表的过程, 因为是读取in()里面的值的过程慢,如果同步加载的子表多,更加慢。 试过在100M的局域网,主表加载超过2000条数据,就超时出错了。如果取消子表的同步加载,就秒开。 出错提示,好像是XXX逸出了。。应该是in()里面的参数太多了。
|
-- 作者:e-png -- 发布时间:2013/11/18 18:17:00 -- 最好用 inner join ,飞快。。。。 |
-- 作者:有点甜 -- 发布时间:2013/11/18 20:38:00 -- 首先第一个,in是肯定会慢的。同时你要看看你是否触发了其余的代码导致更慢 http://www.foxtable.com/help/topics/2218.htm 你可以试试用大于>小于来加载子表,这样会快一些。比如 DataTables("子表").LoadFilter = "OrderID > \'ACT201309-001\'"
|
-- 作者:jnletao -- 发布时间:2013/11/19 9:33:00 -- 字符串 也可以用 大于 小于吗? |