重复检查两个非常大的表

时间:2015-07-20 10:45:07

标签: php mysql duplicates

我目前正在尝试检查两个表中的重复项,但这些表格很大我有两个表,一个有大约6000万个数字,一个有大约1600万个数字。

服务器是16 Core Xeon,32GB DDR3 RAM 14900,2x 15K SAS。 我试图运行这个命令SELECT number FROM numbers,newData WHERE newData.number = numbers.number,这样我就可以找出我们有多少重复项,但是我把它留了24小时而没有运气。

我现在写了一个php脚本,一次循环播放20个,如果存在则写入newData表是的,但每个数字需要6秒。

我怎样才能加快速度?我已经为mysql做了所有可能的优化,包括inno_db_buffer_pool。

2 个答案:

答案 0 :(得分:0)

您的查询似乎没问题,但您应确保在两个表中都为您的数字列编制索引。

如果他们没有为每个人创建一个索引,这可能需要一段时间并占用一些磁盘。但如果这是你想要多次运行的东西,那将是值得的。

答案 1 :(得分:0)

尝试:

SELECT number 
  FROM numbers
WHERE exists (
     select 1 
       From newData 
      where numbers.number = newData.number
)

OR

SELECT numbers.number 
  FROM numbers 
  JOIN newData 
  ON numbers.number = newData.number

如果您也可以从查询和查询中发布解释,那就很好。