【发布时间】:2015-09-10 18:25:26
【问题描述】:
我有一个非常大的表,有 25 多万条记录。
我需要从中创建一个新表,其中三个字段是唯一的。
我试过了
SELECT Field1,Field2,Field3, Count(*) FROM `Table` group by Field1,Field2,Field3 having Count(*)>1
Mysql 内存不足
是否有更有效的方法来查找所有具有计数 > 1 的字段的唯一记录,以便我可以进一步使用它们(创建新表等)?
【问题讨论】:
-
如果你需要计数,你必须使用
group by。 -
你有 id 列 auto_inc 吗?还有多少行
-
取决于Field1、Field2、Field3中存储的数据类型和值;您可以在
WHERE子句中使用精心构造的条件将数据分成更易于管理的不同“块”,并运行几个这样的查询来获得整体。 (例如:如果 Field1 是数值类型,数值分布大致均匀,则可以根据跨越的值的子范围进行查询;如果是字符串类型,则可以根据第一个或两个字符分隔数据。) -
根据数据值,您可以将 field(n) 值合成为 int
-
@drew 我有一个带有 autoinc 的 ID 列,并且每个调用的字段都有一个索引。大约 25 列和 2500 万行。
标签: mysql count out-of-memory unique