什么时候由数据库本身强制主键的唯一性有意义?

When does it make sense to enforce uniqueness for the primary key by the DB itself?

我一直是 mysql/postgres 用户,在我发现 snowflake 不强制主键唯一性之前,数据库强制主键唯一性对我来说似乎很自然。这也是有道理的,因为如果 table 不是那么大,执行插入的应用程序始终可以检查主键本身的唯一性,并且通常应用程序不会使用主键进行插入。

如果这种理解是正确的,那么什么时候让数据库强制主键的唯一性才有意义?我的猜测是当应用程序在插入之前检查唯一性的时间 + 实际插入的时间比使用数据库强制唯一性并直接插入要慢。

数据库“帮您查”和“您查”的费用应该是一样的。不过你可以做得更糟。

但性能的关键在于永远不要做不需要的事情。因此,如果您在步骤 A 中有 de-duplicated 一些数据,然后插入到 table B 中,数据库如何知道不需要检查约束..它不需要,所以它必须再次检查.一次又一次。

在 Oracle 中,为了提高性能,您需要花费大量时间来关闭约束。然后再继续。现在看来有点冒险。

所以在 Snowflake 中没有免费的午餐,但也没有隐藏的税收,我知道人们完全喜欢免费午餐的简单碳水化合物感觉。但是我不想要。