4

除了标识表中的唯一列之外,还使用了哪些主键?这不能通过简单地在列上使用自动增量约束来完成吗?我知道 PK 和 FK 用于关联不同的表,但这不能通过仅使用连接来完成吗?

基本上,当使用主键加入时,数据库在做什么来提高性能?

4

6 回答 6

6

主要是为了与外键的引用完整性,当你有一个 PK 时,它也会在后台创建一个索引,这样你在查找值时不需要表扫描

于 2010-02-02T18:14:16.160 回答
2

RDBMS 提供程序通常经过优化以处理具有主键的表。大多数商店统计数据有助于优化查询计划。这些统计信息对性能非常重要,尤其是在较大的表上,如果没有主键,它们将无法正常工作,并且您最终会获得不可预测的查询响应时间。

大多数数据库最佳实践书籍都建议使用主键创建所有表,没有例外,遵循这种做法是明智的。没有多少事情比一个构建没有参照完整性的数据库的初级软件开发人员更重要!

于 2010-02-02T18:15:08.773 回答
1

一些 PK只是一个自动递增的列。此外,您通常使用 PK 和 FK 加入。必须有某种关系才能加入。此外,大多数 DBMS 默认自动索引 PK,这提高了连接性能以及基于 ID 查询特定记录。

于 2010-02-02T18:14:46.183 回答
1

您可以在没有主键的情况下在查询中加入,但是,您必须定义一个主键来强制执行数据完整性约束,至少对于 SQL Server。(外键等)

此外,这里有一篇关于Primary Keys的有趣读物。

于 2010-02-02T18:15:25.123 回答
1

在 Microsoft Access 中,如果您有一个指向 SQL Server 的链接表,则源表必须有一个主键才能使链接表可写。至少,Access 2000 和 SQL Server 6.5 就是这种情况。以后的版本可能会有所不同。

于 2010-02-03T03:55:31.187 回答
0

密钥与数据完整性和识别有关。密钥的唯一性是通过在数据库中设置一个约束来阻止可能违反密钥的“坏”数据来保证的。以这种方式保证数据完整性规则的事实正是使密钥可用作标识符的原因。这适用于任何键。按照惯例,每个表的一个键称为“主”键,但这并不会降低其他备用键的重要性。

在实践中,我们需要能够对所有类型的数据(不仅仅是数字)强制执行唯一性规则,以满足数据质量和可用性的要求。

于 2014-04-26T19:58:50.937 回答