何时我们应该在 DB2 中使用带有外键约束的 NOT 强制



IBM DB2 文档说:

若要提高查询的性能,可以添加信息 表的约束。

我们可以提供以下NOT ENFORCED选项:

ALTER TABLE <name> <constraint attributes> NOT ENFORCED

解释相当简单:

仅当表数据 独立已知符合约束。查询结果可能会 如果数据实际上不符合 约束。

据我了解 - 如果我有一个 foreign key ,在一个表格中,声明为 NOT ENFORCED 这与根本没有它完全一样。

但是,它的实际用例是什么,何时应该使用此选项?(没有强制约束和根本没有强制约束有什么区别)

所谓的信息约束可用于提高性能。这是通过向数据库添加见解来完成的。如果没有信息约束,Db2 将不知道两个表和相关列之间的关系。现在,SQL 查询编译器和优化器可以利用这一事实并优化查询执行。

因此,仅当数据确实以指定方式受到约束时,才应应用信息约束。Db2 不强制执行它,用户(您)保证该数据属性。因此,当它不为 true 时,查询结果可能是错误的,因为 Db2 假定存在关系。

相关内容

  • 没有找到相关文章

最新更新