猿问

如何针对大型数据集优化比较性能?

我有一个非常慢的方法,我不确定如何优化此方法。我也不太了解LINQ的工作原理,因此,如果解决方案是使用LINQ,请解释一下。非常感谢。


该dtExcel方法的参数中的DataTable包含第一部分数据,另一部分_dt来自数据库。通过两个for循环运行的数据大约如下:700(dtExcel)* 10,000(_dt)= 7,000,000个比较。


这里的代码:


public async Task<DataTable> GetAdressesFromDB(DataTable dtExcel)

{

    try

    {

        return await Task.Run(() =>

        {

            CurrentProgress = 0;

            ProgressbarDBVisible = true;


            _dtFoundDuplicates.Clear();


            _dt = new DataTable();


            _dt = DBConn.GetAllAddresses(dtExcel);


            ProgressMaximum = dtExcel.Rows.Count;


            for (int i = 0; i < dtExcel.Rows.Count; i++)

            {

                CurrentProgress++;

                for (int y = 0; y < _dt.Rows.Count; y++)

                {

                    // Criteria to check duplicates

                    string compareAdressExcel = "";

                    string compareAdressDB = "";


                    // Get the setted filter criteria and create both excel and db compare strings

                    string[] criteriaFields = ConfigurationManager.AppSettings["strFilter"].Split(',');

                    foreach (String cField in criteriaFields)




白板的微信
浏览 152回答 3
3回答

郎朗坤

如果这是sql server,则应该使用ssis。它具有模糊匹配,这对于匹配来自两个不同来源的地址上的记录几乎是必须的。我也将使用ssis将数据导入到表中,并对管道中的数据进行任何预处理。然后可以使用作业来运行整个过程。
随时随地看视频慕课网APP
我要回答