这可能是一个非常天真和愚蠢的问题,但我还是要问
我有一个包含多个字段的表,其中没有一个字段是唯一的,还有一个主键,这显然是唯一的。
定期通过非唯一字段访问该表,但没有用户 SP 或进程通过主键访问数据。那么主键有必要吗?它在幕后使用吗?删除它会对性能产生积极还是消极影响?
最佳答案
有必要吗?不。在幕后使用?嗯,它被保存到磁盘并保存在行缓存等中。删除会稍微提高您的性能(使用毫秒精度的 watch 来注意)。
但是......下次有人需要创建对此表的引用时,他们会诅咒你。如果他们勇敢的话,他们会添加一个PK(并等待很长时间DB创建列)。如果他们不勇敢或不愚蠢,他们将开始使用业务 key (即数据列)创建引用,这将导致维护噩梦。
结论:既然拥有一个PK(即使不使用ATM)的成本是如此之小,那就顺其自然吧。
关于sql - SQL Server 中是否需要主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459429/