Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySQL-提取表中的记录,但不提取另一个表中的记录_C#_Mysql - Fatal编程技术网

C# MySQL-提取表中的记录,但不提取另一个表中的记录

C# MySQL-提取表中的记录,但不提取另一个表中的记录,c#,mysql,C#,Mysql,我知道这个问题已经被问过很多次了。 问题是其他解决方案不起作用。。 我尝试了以下方法: SELECT ID FROM TABLE_1 AS T1 WHERE NOT EXISTS (SELECT COLUMN_1,COLUMN_2 FROM TABLE_2 AS T2 WHERE T1.COLUMN_1 = T2.COLUMNS_1 AND T1.COLUMN_2 = T2.COLUMN_2); 无论是从工作台还是从代码(我使用的是Visual Studio 2013 C#),它都会超时。 我

我知道这个问题已经被问过很多次了。 问题是其他解决方案不起作用。。 我尝试了以下方法:

SELECT ID FROM TABLE_1 AS T1 WHERE NOT EXISTS (SELECT COLUMN_1,COLUMN_2 FROM TABLE_2 AS T2 WHERE T1.COLUMN_1 = T2.COLUMNS_1 AND T1.COLUMN_2 = T2.COLUMN_2);
无论是从工作台还是从代码(我使用的是Visual Studio 2013 C#),它都会超时。 我不知道如何使查询更容易,以使其工作。。也许把它分成两份

例如:

Table 1                                   Table 2
ID COLUMN_1 COLUMN_2                      ID COLUMN_1 COLUMN_2
1  0        1                             1  0        1
2  0        1                             2  0        1
3  0        1                             3  0        1
4  1        2                            
5  1        2                             
6  1        2                             
它应该会回来

1 2

也可以仅使用ID(2)

编辑:
如果您不需要匹配id,那么它只是:

SELECT 
     Table_1.ID 
    ,Table_1.COLUMN_1 
    ,Table_1.COLUMN_2 
FROM Table_1 

LEFT JOIN Table_2
    ON Table_2.COLUMN_1 = Table_1.COLUMN_1
    AND Table_2.COLUMN_2 = Table_1.COLUMN_2

WHERE Table_2.ID  IS NULL 
如果这仍然太慢,也许索引可以帮助。 如果索引没有帮助,您仍然可以增加命令

不过,另一个选择是:

SELECT 
     Table_1.ID 
    ,Table_1.COLUMN_1 
    ,Table_1.COLUMN_2 
FROM Table_1 
WHERE 
(COLUMN_1, COLUMN_2) NOT IN (SELECT COLUMN_1, COLUMN_2 FROM Table_2)

这些表上有索引吗?特别是你查询的专栏?我不知道你的意思。。但我想我没有them@ayasha“索引”是“索引”的复数形式。你应该知道那是什么。超时也可能表明连接本身存在问题,您确定这样可以吗?您的表中有多少数据?连接很好,我已将表中的记录减少到20k条,但仍然不起作用。如果您不知道索引是什么,那么是时候阅读它们了。这真的太多了,不能放在一篇SO文章中,我建议你读一本关于数据库设计的基本书籍。这基本上是相同的查询,数据库必须执行相同的连接操作。为什么你会期望它比原来的更快?这应该像预期的那样工作。Left join的工作效率比exist/not exist子句高是的,它很快..但问题是两个表之间的ID可能不同,同一ID的记录不相同..因此我不能使用JOIN@ayasha:在这种情况下采用它。@nvoigt:它取决于表中的行数。用很少的,存在的速度更快。对于许多行,左连接速度更快。
SELECT 
     Table_1.ID 
    ,Table_1.COLUMN_1 
    ,Table_1.COLUMN_2 
FROM Table_1 
WHERE 
(COLUMN_1, COLUMN_2) NOT IN (SELECT COLUMN_1, COLUMN_2 FROM Table_2)