我目前正在尝试检查两个表中的重复项,但这些表格很大我有两个表,一个有大约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。
答案 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
如果您也可以从查询和查询中发布解释,那就很好。