我想更好地理解使用CHECKSUM(具有唯一约束)与自引用表语句(如下所示)在插入之前检查记录中唯一性的区别。什么样的情况会使一种选择成为优于另一种的最佳选择,以及出于什么原因?
要求:每组列都需要在表中的每条记录中都是唯一的,这就是我把这个语句放在一起的原因;在一次调用数据库中检查所有列。
INSERT INTO tblTable
(Column1, Column2, Column3, Column4, Column5, Column6)
SELECT
@Column1, @Column2, @Column3, @Column4, @Column5, @Column6
WHERE NOT EXISTS
(SELECT DISTINCT
t1.Column1,
t1.Column2,
t2.Column3,
t2.Column4,
t3.Column5,
t3.Column6
FROM tblTable t1
JOIN tblTable t2 ON (t1.UID = t2.UID)
JOIN tblTable t3 ON (t1.UID = t3.UID)
WHERE
t1.Column1 = @Column1 and
t1.Column2 = @Column2 and
t2.Column3 = @Column3 and
t2.Column4 = @Column4 and
t3.Column5 = @Column5 and
t3.Column6 = @Column6)