Mysql 如果我们管理唯一性,为什么要使用主键&;从代码自动递增?

Mysql 如果我们管理唯一性,为什么要使用主键&;从代码自动递增?,mysql,sql,sql-server,database,rdbms,Mysql,Sql,Sql Server,Database,Rdbms,我知道我们使用主键来唯一地标识每一行,但如果我们从代码管理所有行,那么?主键的具体用途是什么?通过定义主键,您可以更快地通过键检索数据。如果您在id列上使用identity,则不需要在同一列上使用主键。 在没有索引的情况下,用户从数据库中删除父行 将强制SQL Server查询引擎扫描子表 在外键中引用,以确保不影响数据完整性 妥协的。考虑一个数十万的儿童表 排;索引可以大大加快查找速度 外键级联选项的性能(删除时) CASCADE,ON-UPDATE CASCADE)可以通过使用显著改进 由于

我知道我们使用主键来唯一地标识每一行,但如果我们从代码管理所有行,那么?主键的具体用途是什么?

通过定义主键,您可以更快地通过键检索数据。

如果您在id列上使用identity,则不需要在同一列上使用主键。

  • 在没有索引的情况下,用户从数据库中删除父行 将强制SQL Server查询引擎扫描子表 在外键中引用,以确保不影响数据完整性 妥协的。考虑一个数十万的儿童表 排;索引可以大大加快查找速度
  • 外键级联选项的性能(删除时) CASCADE,ON-UPDATE CASCADE)可以通过使用显著改进 由于引擎执行查询以搜索行,因此索引的 应自动删除或更新的
  • 上的父表和子表之间的联接的性能 外键列得到了极大的改进。这是一个自然的假设 相关的表可以一起查询以生成 结果集。考虑较早的OrthHealth/LITETION示例。信息技术 执行不需要 不仅是行项目的元素,还包括ORDERHEADER的元素(例如。 订单日期,输入订单的CSR)
  • 在开发和维护数据模型时,请检查模型的位置 可以从外键关系中获益
  • 确保外键列已编制索引,以防止表扫描 在数据删除、级联操作和查询联接期间

看看这篇文章,你就不必在DB中PK了。我看到相当大的应用程序在内部管理一切,在DB服务器端没有PK,没有FK。只需创建一些索引来加速查询三个糟糕的响应;它们都没有解决你的(重复的)问题。主要原因是什么?因为代码是由犯错误的人编写的,而且错误总是会发生的。从历史中学习-你的课程应该涵盖数据管理的历史以及关系理论如何发展来解决数据不一致的问题。我认为,在id列上使用标识并不一定会使该列成为主键列,在表中使用复合键的情况下,其中我可以有多个列作为主键,但在一个列上有一个标识