【发布时间】:2016-04-15 12:22:07
【问题描述】:
我在两个表字段 A、B、C、D 之间插入,相信我已经在 A、B、C、D 上创建了唯一索引以防止重复。但是,我以某种方式简单地对这些进行了正常索引。所以插入了重复项。 2000万条记录表。
如果我将现有索引从普通索引更改为唯一索引,或者只是为 A、B、C、D 添加新的唯一索引,是否会删除重复项,或者由于存在唯一记录而添加失败?我会对其进行测试,但它有 3000 万条记录,我不想弄乱表格或复制它。
【问题讨论】:
-
你需要使用
IGNORE关键字——否则会失败。在小测试台上进行测试。 -
"IGNORE 是标准 SQL 的 MySQL 扩展。它控制 ALTER TABLE 的工作方式,如果新表中的唯一键有重复项或启用严格模式时出现警告..." - @ 987654321@
-
@PaulSpiegel 这很有道理。我尝试复制 Table1,仅结构,并添加唯一索引,然后在原始表和新索引表之间进行插入,但它确实失败了。我这样做是因为在 3000 万条记录上更改或添加唯一索引会花费太长时间。所以现在我在“插入”之后添加了“忽略”,效果很好。
标签: mysql duplicates unique-index