更适合检查表中的重复项:使用CHECKSUM聚集唯一索引或临时表?

时间:2019-04-04 11:10:07

标签: sql-server

我的表有6列,我向其中插入了数据行。我想跳过重复项。有什么更有效的?有一个复制表,在它们两个中都添加CHECKSUM列,并使用INSERT上的TRIGGER检查重复项。还是使用IGNORE_DUP_KEY = ON在3列上创建UNIQUE NONCLUSTERED INDEX?

1 个答案:

答案 0 :(得分:1)

对于安全可靠的数据库设计而言,选择唯一的索引或唯一的约束将是正确的方法。正如我所看到的,通常没有必要(甚至可能效率更低)使用单独的表,该表由触发器填充您自己的唯一值...

但是,在批量插入/迁移数据时,我只会临时使用DUP_IGNORE_KEY,然后仔细检查结果数据。即使在这种情况下,也有多种避免方法。在我作为数据库应用程序软件开发人员的20年中,我从未使用过DUP_IGNORE_KEY。 (实际上,我刚刚才了解到它。)我肯定会从不在生产服务器上的索引上永久使用它。恕我直言,它就像旧的VB的“ ON ERROR RESUME NEXT”一样丑陋:如果出现问题,您不会立即得到反应!