1 sql database-design data-modeling
如果我有一个用户可以标记另一个用户帖子并且无法撤消或更改的网站,我是否需要拥有主键?我的所有选择都在post_id上,并带有where子句以查看用户是否已标记它.
在您的其他一些帖子中,我觉得您试图避免在表中添加主键的原因是为了节省空间.
别这么想.
如果不首先测试它们以确定它们是否真的有效,那么进行非标准优化就是一个坏主意.您是否运行了一些测试,通过省略此表中的主键来显示您在数据库中节省了大量空间?或者你只是猜测?
使用主键并不一定意味着您将使用更多空间.根据数据库的不同,如果省略主键,它可能会为您添加隐藏字段(例如,如果您在MySQL/InnoDB中没有PK,则会在包含6字节行ID的合成列上添加隐藏的聚簇索引价值观(来源)).如果您确实使用主键,而不是添加新列,则可以选择一些您知道应该是唯一的现有列.它不会占用更多空间,只是意味着数据将以不同的顺序存储,以便于搜索.
当您添加索引时,该索引将占用额外的空间,因为索引基本上只是表的几列的副本,加上返回原始表中的行的链接.还记得数据库在没有PK时使用的隐藏列吗?那么现在它必须使用它来查找你的行,所以你也会在你的索引中得到它的副本.如果您使用主键,那么您可能不需要添加一个索引,因此您实际上在这里节省了空间.
除此之外,如果您的桌面上没有主键,一些有用的数据库工具将无法正常工作.离开后,你会惹恼每个必须维护你数据库的人.
那么告诉我,为什么你认为没有一个是个好主意?
归档时间: |
|
查看次数: |
533 次 |
最近记录: |