Paul White explains why there is a big performance hit when using IGNORE_DUP_KEY on clustered indexes:
The
IGNORE_DUP_KEYindex option can be specified for both clustered and nonclustered unique indexes. Using it on a clustered index can result in much poorer performance than for a nonclustered unique index.The size of the performance difference depends on how many uniqueness violations are encountered during the
INSERToperation. The more violations, the worse the clustered unique index performs by comparison. If there are no violations at all, the clustered index insert may even perform better.
I use IGNORE_DUP_KEY primarily in cases like queue tables where I might be queuing up changes to migrate to a warehouse and where the chance of collision is low but non-zero. It looks like pushing much beyond that pattern can be devastating for performance.