有很多SQL查询条件

时间:2013-08-16 02:22:35

标签: sql performance

我通过从本地MSSQL中逐行比较来更新远程MySQL数据库。想法是通过3个步骤进行更新:

1:从本地选择所有ID并在远程执行以下查询:

delete from REMOTE_DATABASE.TABLE where ID not in 
( list of LOCAL_DATABASE.TABLE ID's linked by OR condition )

2:从LOCAL_DATABASE.TABLE中选择遥控器上不存在的ID并插入

3:更新包含两个表的行。

我的问题是关于第一步:我有50000多种产品。我在C#工作,我可以加入所有ID的字符串,但我想知道可以查询50000 ID由OR条件链接执行?这是一种错误的做法吗?

1 个答案:

答案 0 :(得分:0)

所以我以前就这样做了。很久以前,虽然如此,我可能会错过一步,但我希望你能得到这个想法。

  1. 将MSSQL数据库上的链接服务器设置为MySQL数据库。请参阅此Linked MySQL Server文章
  2. SELECT您希望从链接服务器将所有表转换为MSSQL SQL上的临时表。像SELECT * INTO #temp FROM linkedserver.tablename这样的东西,但最好是创建一个合适的临时表并索引你要加入的列,即

    CREATE TABLE #Test
    (
    ID INT PRIMARY KEY NOT NULL
    )
    INSERT INTO #Test
    SELECT * FROM linkedserver.tablename
    
  3. 执行LEFT / RIGHT JOIN以在本地计算机上查找新ID,并通过链接服务器将其插入远程服务器。有关如何在比较两个表Using Left join to find new rows

  4. 时使用LEFT / RIGHT联接来获取新记录的详细信息,请参阅此链接
  5. 使用UPDATE语句更新远程服务器并在其中加入JOIN。因此,基本上使用INNER JOIN使用临时表中的值更新远程服务器。

  6. 现在可能会遇到一些错误,语法在这里发布,我可以尝试为您解决它们。但是,我已经使用这种技术在MySQL和MSSQL服务器之间进行同步,并且它运行良好。因为它基于SETS而不是基于RBAR,所以它也非常快。

相关问题