比较两个大表的唯一记录

时间:2013-08-21 13:30:38

标签: php mysql

我有两个表,其中tableA包含100万条记录,而其他tableB包含1300万条记录,现在我想从tableA记录那些不在tableB中的记录

我使用了以下查询

 SELECT tableA .mergedSSN,total_unique_ssn.unique_ssn  FROM `tableA`,`tableB` WHERE tableA.mergedSSN <> tableB.unique_ssn 

但是上面的查询时间太长了,请帮我快速录制。

2 个答案:

答案 0 :(得分:2)

首先,在每个表中按列创建索引(如果还没有它们)。然后,

SELECT 
  tableA.mergedSSN
FROM
  tableA 
  LEFT JOIN
    tableB ON tableA.mergedSSN=tableB.unique_ssn
WHERE
  tableB.unique_ssn IS NULL

答案 1 :(得分:1)

怎么样

SELECT tableA.unique_ssn FROM tableA
WHERE tableA.unique_ssn NOT IN (SELECT tableB.unique_ssn FROM tableB)

您需要确保将tableA.unique_ssn和tableB.unique_ssn都作为索引字段。