我最近开发了一个.Net MVC Web应用程序,并将数据库架构发送给我使用的DBA,以便在生产数据库服务器上构建数据库。 DBA问我是否需要所有表中的主键。我说是的,主要原因是,这是一个很好的数据库设计实践。当我问为什么DBA告诉我,最好使用主键来最小化组织数据库服务器中的表的数量以节省资源。在数据表中使用主键是否有某种不利影响?
答案 0 :(得分:1)
当您从每个贡献表中创建“连接表”主键时,形成连接表的复合键。那么很有可能可以将这个复合密钥编入索引。
低效的索引策略会降低性能。
一个例子是MySQL的'InnoDB'引擎,这是我经常使用的引擎。使用InnoDB,每个索引条目都与相应主键的值连接在一起。当查询通过辅助索引读取记录时,它与主键一起使用,以查找记录。
因此主键可能会影响性能,特别是如果它像java UUID(128bytes)那样大。