c# - 查找数据库中是否存在 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) )
解决方案
您可以这样尝试 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();
推荐阅读
- javascript - GWT、RPC 和 SQL,您的结果集是保留在服务器端还是可以在客户端使用?
- jspdf - 如何使用jspdf / autotable在最后一页显示表格页脚?
- runtime-error - D3D12 错误:基于 GPU 的验证:绘制,访问了未初始化的根参数。着色器阶段:PIXEL,根参数索引:[1]
- vb.net - vb.net Outlook - 代码中没有错误但未发送邮件
- python - 我可以使用 dask 创建一个 multivariate_normal 矩阵吗?
- c++ - sqlite 在多行查询返回第一行后返回 SQLITE_DONE
- python - 总结多个类 Def 函数以获取 Django 模型中的总量
- c# - 获取有关 Func 的调用者和参数(名称和值)的信息
代表 - python - Argsort 不能与 numba 结合使用
- sql - 如何在 sql 中将两个 DATETIME 划分为 15 个 mints 插槽?