我有一张桌子( prepay_bookings ),我在那里提供有关预付预订的所有信息,而且我已经使用了很长时间,所以它非常充实......
现在我想保存到货付款预订的信息,这个数据容器几乎相同但没有付款数据。那将少3或4个字段。
什么是最好的设计?
如果我使用b,最后我会以太多行结束..这会影响性能吗?
答案 0 :(得分:2)
这是modelling the object oriented concept of inheritance in a relational database.
的经典案例如果我使用b,我最后以太多行结束..这会影响到 性能
可能 - 但一般情况下,只要查询达到索引,数据库就不会真正关心你是否加倍记录数。找出答案的唯一方法是尝试 - 在测试系统上 - 看看瓶颈在哪里。
答案 1 :(得分:2)
总之 - 我不认为有最好的"回答,但是对于您的特定用例,您需要考虑权衡。如果它是您想要的速度 - 两个表将对许多行有所帮助,但是对维护和共享/ DRY代码有影响。
更多细节:
这取决于哪个mysql引擎,但作为一般规则,选择和插入2个表的速度会快一些,每个表的行数比一个较大的表多一半 - 每个表都有较小的索引,并且有数百万行除非您使用聪明的分区规则,否则会产生性能影响。
每个表都有自己的索引 - 并且使用额外的字段,您也必须对此进行索引。 它还取决于代码中的用例。
如果代码中包含您经常需要混合行查找的实例,我认为将它们放在一起会很有用。如果情况绝非如此,则每个select / insert都必须考虑该标志。
你总是可以为相同的东西模板化DDL(创建语法)。 如果您正在共享一些表单代码和其他代码 - 将它们分开可能会让它们分开,使代码更难维护或更少干。