删除mysql中的重复数据(在大数据场景下)

时间:2015-10-12 09:04:28

标签: mysql

我在MySQL中遇到了大数据的大问题。

我们有两个大表,结构相同,用于存储英汉并行语料库。这两个表都包含一千万年级的记录。在一个表内和这两个表之间存在大量重复数据(例如,相同的英文和中文内容)。我们希望通过删除数据冗余来将两个表联合起来以获得干净的表。但是,我们发现大数据的挑战并不容易。主要的问题是,当我们尝试在MySQL中联合这两个表时会出现内存溢出。

表格的数据结构

id  ---     en     ---   cn
0   ---   an apple ---  一个苹果
1   ---   an orange---  一个桔子
0   ---   an apple ---  一个苹果

1 个答案:

答案 0 :(得分:0)

此问题通常是由于您在查询中使用的所有列上都缺少正确的索引。创建索引并重试。

例如,假设您有以下查询:

SELECT *
FROM t1
INNER JOUN t2 ON t2.t1_id = t1.id
WHERE t1.col1 = 10
  AND t2.col2 = 20

您需要在此查询的所有4列上创建索引:

  • t1.id
  • t2.t1_id
  • t1.col1
  • t2.col2

注意:如果t1.id是主键,那么它有一个索引,你不需要为它创建一个索引,所以只需在其他3列上创建索引。