以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Laod加载表数据变慢问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151292)

--  作者:z769036165
--  发布时间:2020/6/19 16:44:00
--  Laod加载表数据变慢问题
情况:
表A存在10万行数据,全部加载后
在另外的窗口中
存在表B和表C。其中表C与表B的某项关联
设置点击表B行时动态Load加载对应的表C项(数据不多,1~20行左右)

问题:
在表A加载10万时,窗口中点击表B行,load加载表C项变慢了,而且卡顿,点窗口的其他功能也都卡顿
在不在加载表A时,窗口中点击表B行,load加载表C非常快,不卡顿

请问这是什么情况?这表A与表B与表C没任何关系,表A表事件中无任何代码,表B与表C中,只有表B有一行绘制,其他事件代码都没有。

--  作者:有点蓝
--  发布时间:2020/6/19 16:50:00
--  
加载数据是在主线程的,加载过程中会影响整个foxtable程序的运行
--  作者:z769036165
--  发布时间:2020/6/19 16:55:00
--  
我说的情况是加载全部完成后,只是纯粹的表中存在10万行数据时,其他表的load加载就变慢
[此贴子已经被作者于2020/6/19 16:56:14编辑过]

--  作者:有点蓝
--  发布时间:2020/6/19 17:01:00
--  
表B、表C是不是有表达式列,或者是表事件和表A的数据关联?
--  作者:z769036165
--  发布时间:2020/6/19 17:02:00
--  
我测试了下
Dim st As Date = Date.Now
DataTables("表C").LoadFilter = "编号 = \'A1\'"
DataTables("表C").Load
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
在表A存在10万行数据时,显示耗时0.4418689s
在表A不存在行数据时,显示耗时0.0388956s
差了将近10倍


--  作者:z769036165
--  发布时间:2020/6/19 17:03:00
--  
没有任何关联,表事件都特意看了,都没有,就是从sql数据库加载过来的表,没有表达式列
--  作者:有点蓝
--  发布时间:2020/6/19 17:08:00
--  
数据多肯定会对数据库的使用有影响。不管什么数据库都一样
--  作者:z769036165
--  发布时间:2020/6/19 17:12:00
--  
这个是load加载进狐表中,而且之前的表都加载完了,在狐表中不加载这么多行数据,就很快,这个应该和数据库影响没关系吧,我用新创建的项目测试,发现也是这样
--  作者:z769036165
--  发布时间:2020/6/19 17:14:00
--  
就是在新项目中加载一个外部sql数据中10万行的表,
然后在新项目的内部表进行load加载,就变慢10倍以上,这个表和外部表都没点关系啊

--  作者:有点蓝
--  发布时间:2020/6/19 17:19:00
--  
数据加载后都放在内置的数据库里,所有表格已经加载的数据都在一个内置的数据库里。内置的数据库是一个access数据库,数据越多对项目肯定有效越大,不是非常必要不建议一次加载这么多数据,按需加载,或者分页加载