当前位置:  开发笔记 > 数据库 > 正文

为什么不将IGNORE_DUP_KEY设置为ON?

如何解决《为什么不将IGNORE_DUP_KEY设置为ON?》经验,为你挑选了1个好方法。

IGNORE_DUP_KEY = ON基本上告诉SQL Server插入非重复的行,但是默默地忽略任何重复的行; 默认行为是引发错误并在不允许它们的列中存在重复时中止整个事务.

我已经处理了大量数据,这些数据通常至少有一个副本,UNIQUE当我不知道时,我喜欢在我知道一个值不应该有重复时使用约束; 然而,当我尝试批量加载数据时,我想要的最后一件事是它完成了90%,然后突然遇到重复并错误地解决了整个问题(是的,我知道明显的解决方案是确保没有重复,但有时我只是递给一个填充数据的电子表格并告诉他尽快加载它.

那么,具有默认值的原因是什么OFF,以及为什么希望它一直处于开启状态,以便任何非重复条目成功,而您不必担心任何重复项; 无论如何,重复的可能性都在那里.

它与性能或其他相关吗?这似乎是个好主意,但必须有一些理由说明它不是默认行为.

主要是,有充分的理由使用我应该知道的,还是应该根据具体情况进行评估?



1> Learning..:

只要数据库中存在与"正常"的偏差,您可能想知道它.

您保持密钥的独特之处在于由于业务需求而产生的一些限制因素.数据库只是保持在交易的一边说'嘿,你希望这是独特的,但现在你说的是相反的事情.下定决心'

如果这是故意的,你可以通过使用IGNORE_DUP_KEY来请求数据库关闭:)


一条评论,将ignore设置为ON并非没有后果。如果您有一个身份列,您将看到由于重复而被忽略的每个插入的身份跳过。
在非聚集索引上启用此选项会降低性能[使用IGNORE_DUP_KEY维护唯一索引](https://blogs.msdn.microsoft.com/craigfr/2008/01/30/maintaining-unique-indexes-with- (ignore_dup_key /)并可能导致并发插入批处理严重范围锁定[由于IGNORE_DUP_KEY索引选项而引起的范围锁定(RS-U)](http://aboutsqlserver.com/tag/locking/)。因此,当您想在一张照片中插入很多行而忽略重复项时,请仅将其应用于集群键。
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有