我在MySQL 5.6上有一个InnoDB表,我想在VARCHAR列中添加一个唯一约束(让我们称之为x
列)。非常简单,除了我有超过500万行,所以我想在开始之前预测任何问题。
具体问题:
x
的重复值。但是,如果有人试图在添加约束的ALTER操作进行时为x
插入非唯一值,那么会发生什么?ADD UNIQUE
,ADD CONSTRAINT UNIQUE
,ADD UNIQUE INDEX
之间是否存在差异?提前致谢。
答案 0 :(得分:2)
只有一种方法可以确定需要多长时间,以及尝试它的方法。如果您正在处理生产系统,则无法离线,您需要从最新备份创建副本并尝试首先迁移。如果它在具有类似功能的硬件上并且负载较轻,就像您的数据库将在实际迁移期间一样,那么它应该给你一个想法。
如果此表非常关键,要执行此类迁移锁定表,您需要使网站脱机。在重复数据删除工作之前执行此操作。
通常UNIQUE INDEX
是实现这些目标的方法,因为它也会自动施加约束。
答案 1 :(得分:0)
如果有副本,请使用幽灵迁移