【问题标题】:Selecting all unique records from 1.5million row table with 50 columns从 50 列的 150 万行表中选择所有唯一记录
【发布时间】:2014-02-05 08:42:57
【问题描述】:

我需要从一个有 50 列的 150 万行表中选择所有唯一记录并将它们放在另一个表中,我还没有添加任何类型的索引,有没有比这更好的方法:

INSERT INTO `unique` SELECT DISTINCT * FROM `allData`

我刚刚在 phpmyadmin 中开始了这个查询,但我认为这可能是错误的方法吗?任何建议将不胜感激。

【问题讨论】:

  • 定义“独特”。 2 行是否相等,因为所有 50 列都相等?
  • 是的,这正是我的意思!

标签: mysql


【解决方案1】:
  1. 如果您的表没有任何索引,您将面临巨大的痛苦。
  2. 您真的需要在所有 50 列中查找重复项吗?考虑只获取您真正需要的数据。
  3. 添加适当的索引。这一点我怎么强调都不过分。检查this answer。

【讨论】:

  • 感谢您的回复!在规范化之后,我需要保留所有 50 列。您有任何步骤(即使用什么键?)/查询示例来检查重复行吗?
  • 如果您确实需要对 50 列进行重复数据删除,并且它们没有被索引,并且您无法规范化该表,那么完全按照您所写的 (select distinct...) 来做咖啡;)我认为您应该在尝试对其进行重复数据删除之前尝试对表格进行规范化...它可以为您节省很多痛苦。
  • +1 SELECT DISTINCT 解决方案是唯一的选择,因为 MySQL 索引不能超过 16 列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多