[英]Best way to compare two large list, C#
This is for one of my ETL project to sync two database, some table is 4G, so ETL job just load updated data to insert or update, that works fine, but the source table will delete some records, and I want to delete from my table too. 这是我的ETL项目之一,用于同步两个数据库,某些表是4G,所以ETL作业只是加载更新的数据以进行插入或更新,效果很好,但是源表将删除一些记录,并且我想从我的表中删除表也。 What I did is:
我所做的是:
List<long> SourceIDList; // load all ID from source table
List<long> MyIDList; // load all ID from my table
var NeedRemoveIDList = MyIDList.Except( SourceIDList );
foreach(var ID in NeedRemoveIDList)
// remove from my table
The code logic work, but load ID from 4G table to List will through "out of memory" exception, is there better way? 代码逻辑可以工作,但是将ID从4G表加载到List将通过“内存不足”异常,是否有更好的方法?
感谢所有注释,最终我在数据库中执行了此操作,在临时表中插入了两个列表,并使用SQL进行比较,花了一些时间来插入数据,但是由于这是ETL作业,因此只需几分钟就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.