sql - SQL Server 中是否需要主键?

标签 sql sql-server sql-server-2005

这可能是一个非常天真和愚蠢的问题,但我还是要问

我有一个包含多个字段的表,其中没有一个字段是唯一的,还有一个主键,这显然是唯一的。

定期通过非唯一字段访问该表,但没有用户 SP 或进程通过主键访问数据。那么主键有必要吗?它在幕后使用吗?删除它会对性能产生积极还是消极影响?

最佳答案

有必要吗?不。在幕后使用?嗯,它被保存到磁盘并保存在行缓存等中。删除会稍微提高您的性能(使用毫秒精度的 watch 来注意)。

但是......下次有人需要创建对此表的引用时,他们会诅咒你。如果他们勇敢的话,他们会添加一个PK(并等待很长时间DB创建列)。如果他们不勇敢或不愚蠢,他们将开始使用业务 key (即数据列)创建引用,这将导致维护噩梦。

结论:既然拥有一个PK(即使不使用ATM)的成本是如此之小,那就顺其自然吧。

关于sql - SQL Server 中是否需要主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459429/

相关文章:

sql-server - 我们可以更新 View 中的真实数据吗?

sql-server - SQL Server 2005 - 如何比较字段值,如果不同则返回计数,每次出现

sql-server - 计算行数而不发出单独的计数

mysql - 用MySQL存储十进制数

mysql - 如何最小化我的查询以加快我的 navicat 中的查询时间?

sql - 将输出参数设置为 sql 存储过程中 count() 的值

sql-server-2005 - 具有复杂条件的 Row_Number

sql - 是否可以忽略存储过程的输出参数?

mysql 查询,选择 distinct/max

php - 获取同一列上具有不同数据的行