首页 > 解决方案 > 查找数据库中是否存在 300K 记录的最快方法

问题描述

我有两个数据库,一个是 oracle 数据库,另一个是 sql server。在 oracle 中我至少有 300K,而在 sql server 中我有 400K 记录。我想检查sql server中是否存在oracle数据。我尝试使用每种方法检查oracle中的每条记录是否存在于sql server中,这需要很长时间。我问你是否有另一种方法会给我同样的结果。我正在使用 LINQ 进行查询

                conn.Open();

                cmd = new OdbcCommand()

                {

                    Connection = conn,

                    CommandText = "select c_id, c_name,c_dob,c_email,c_pnumber from customers"

                    CommandType = CommandType.Text

                };

            OdbcDataReader dr = cmd.ExecuteReader();


            while (dr.Read())

            {

           var customers = _db.tblCustomers.FirstOrDefaulst(x 
           =>x.C_ID.Equals(dr.GetValue(0)) 

          if(customers !=null)
          {

          //do something

          }

          else
          {

          tblCustomers customer = new tblCustomers {


             C_name = Convert.ToString(dr.GetValue(1)),
             C_dob = Convert.ToString(dr.GetValue(2)),
             C_email = Convert.ToString(dr.GetValue(3)),
             C_pnumber = Convert.ToString(dr.GetValue(4))
            }
          }

         }

PS:这只是为了添加新客户,但我有另一个具有相同逻辑的代码来更新记录,我应该每天运行这些方法

添加新记录的查询

var customers = _db.tblCustomers.FirstOrDefaulst(x 
               =>x.C_ID.Equals(dr.GetValue(0))  

更新现有记录的查询

var customers = _db.tblCustomers.FirstOrDefaulst(x 
           =>x.C_ID.Equals(dr.GetValue(0)) && x.c_name == dr.GetValue(1) ) 

标签: c#sql-serveroracle

解决方案


您可以这样尝试 1.首先获取与 Oracle 数据的 SQL 数据匹配的特定项目作为列表 2.使用函数将 oracle 数据与 sql 数据Contains()匹配并获取与 sql 数据匹配的数据列表...

从两个表中选择一个列数据以列出必须在两个表中

示例代码如下

var oracleCustomerList=_db.tblCustomers.Select(m=>m.coustomerName).ToList();
var sqlCustomerList=db.tblCustomers.Where(x=>oracleCustomerList.Contains(n=>n.coustomerName)).ToList();

推荐阅读