以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]大量数据筛选匹配解决方案  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175355)

--  作者:spartak
--  发布时间:2022/3/1 22:14:00
--  [求助]大量数据筛选匹配解决方案
我有两个数据表, 原始记录表  数据变更表
1、两个表来源两个不同的系统,没有唯一的对应项,只能通过组合查找,将“数据变更表”中每一行的数据,通过组合查找,找到原始记录表中的对应数据,有可能找不到,有可能找到多条;
2、原始记录表,数据量非常大,数据列有30多列;
3、我写的算法能够找到,但数据量容易导致死机;
我的思路和问题:
思路:采用for each i = 0 to tables(数据变更表).rows.count - 1 遍历“数据变更表”,在循环过程中,利用组合条件(如,合同编号+产品型号),设置“原始记录表”的Filter属性,再确定tables(“原始记录表”).rows.count能找到的行数,再对这些行进行分析;
问题:当“原始记录表“数据10万行,”数据变更表“数据3万行,系统崩溃

问:
1、当表数据量几十万行,采用采用哪种数据库合适(不联网),是内部数据库还是Access或是其他?
2、查找数据用filter属性还是find或是select,哪个占用资源少,速度更快
3、”原始数据表“中,有一些行其实不会被选到,是否可以用加载方式去掉,已经加载的数据,会不会由于filter属性的值的变化,而改变加载内容;我对数据库数据、datatable概念理解不够,比如数据库有100万条数据,datatable加载5000条,table变换filter条件时,只是从5000条中筛选?


--  作者:有点蓝
--  发布时间:2022/3/1 22:42:00
--  
1、如果只考虑可以使用,可以使用access,如果对性能有要求,建议使用SqlServer
2、filter属性还是find或是select根据实际情况使用,没有哪个占用资源少,速度更快,用到合适的地方就好
3、table变换filter条件时,只是从已加载的数据中,也就是5000条中筛选

数据多,建议直接使用sql查询:http://www.foxtable.com/webhelp/topics/0687.htm
查询结果不多的直接返回所有结果处理,如果查询结果比较多,可以考虑加上分页处理,比如:http://www.foxtable.com/webhelp/topics/2692.htm