我正在创建一个应用程序,将两个数据库进行比较,一个是oracle数据库,另一个是MySQL数据库。在比较两个数据库之后,它将把MySQL数据库丢失的任何数据移动到MySQL数据库中。然后它会更新到可视监视器,告诉最终用户数据已被移动。
我完成比较并移动新线路没有任何问题,但我相信我使用的LINQ查询导致winform UI冻结了将近一分半钟。数据库包含每个18,000 - 25,000行的任何数据。
查询如下所示:
var matched = from table1 in oClone.AsEnumerable()
join table2 in mClone.AsEnumerable() on table1.Field<decimal>("CASEID") equals table2.Field<Int64>("CASEID")
where table1.Field<decimal>("CASEID") == table2.Field<Int64>("CASEID") ||
table1.Field<string>("CASENAME") == table2.Field<string>("CASENAME") ||
table1.Field<DateTime>("CREATEDDATE") == table2.Field<DateTime>("CREATEDDATE") ||
table1.Field<int>("STUDYMODEID") == table2.Field<int>("STUDYMODEID") ||
table1.Field<string>("ENVIRONMENT") == table2.Field<string>("ENVIRONMENT")
select table1;
var missing = from table1 in oClone.AsEnumerable()
where !matched.Contains(table1)
select table1;
missingLines = missing.CopyToDataTable();
AddNewLines(missingLines);
有什么方法可以优化查询以停止冻结UI?