Bru*_*bar 9 sql database-design
我们公司正在讨论是否在我们的数据库中的每个表上放置一个自动增量密钥.
我可以理解将一个放在有FK引用的表上,但我有点不喜欢将这些键放在我们的每一个表上,即使这些键永远不会被使用.
请帮助我们在每张桌子上放置自动增量键,除了占用额外的空间和减慢一切(我们有一些数以亿计的记录表).
谢谢
Ken*_*Far 12
我假设几乎所有的表都有一个主键 - 这只是一个问题,即该键是由一个或多个自然键还是一个自动递增的代理键组成.如果您不使用主键,那么在几乎所有表中使用它们通常会获得很多优势.
所以,这里有代理键的一些优点和缺点.首先,专业人士:
缺点:
一般来说,代理键很有用,只要记住缺点,并在适当的时候不要犹豫使用自然键.
如果你对Clustered Indexes使用这样的小键,那么它具有非常显着的优点.
喜欢:
插入内容将始终位于页面末尾.
非聚簇索引(需要引用CIX键)不会有长行地址需要考虑.
还有更多...金伯利·特里普的东西是最好的资源.谷歌她......
另外 - 如果你没有其他任何东西可以确保它的独特性,你就会在每一行中找到一个你不会拥有的钩子.您仍应将唯一索引放在应该唯一的字段上,并在适当的字段上使用FK.
但是......请考虑在现有表格上创建此类内容的开销.这可能非常可怕.您可以在表上放置唯一索引,而无需创建额外字段.然后可以将这些唯一索引用于FK.