使用超类表在数据库中建模继承的性能

时间:2013-11-18 14:51:07

标签: mysql performance database-design database-performance

我的问题,实际上是关于我所拥有的概念/想法的可用性/表现的问题:

设置:

在我的数据库中,两个(实际上是三个)字段总是不断重新出现:titledescription(以及created)。标题始终为VARCHAR(100),描述始终为TEXT

现在,为了简化这些表,我想到了一些东西(并以这种方式改变了它):仅仅创建一个名为content的表,id,{{1 }},titledescription仅作为字段,并始终指向其他所有表格?

示例:

created包含tabidkey(而不是content_idtitledescription

createdchapteridstory_id(“”)

问题:

到目前为止一切正常,但我唯一担心的是表现。我会遇到瓶颈,这样做,还是我应该没事?我现在有大约23个不同的表指向content_id,其中一些表将保存用户定义的内容(日记,评论等) - 因此content中的条目数可能会非常高。

此设置更好,还是等于在每个单独的表格中设置contenttitle

编辑:如果事实证明这是一个坏主意,那么将descriptiontitle等某些字段复制到~25个表中的替代方法是什么?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的问题没有明确的答案,因为它主要取决于表的使用情况,因此请考虑以下几点:

  1. 您需要多久写一次表格?如果有多个插入/更新在一个大表中包含数据会导致问题,因为所有写入操作都将针对同一个表。
  2. 您需要多长时间使用常用数据存储在表格中的数据?如果您的选择大部分时间不需要titledescription,则可以。如果您每次都需要title,那么请考虑到您必须始终使用JOIN表格来处理公共数据。
  3. 如何管理数据库架构?编写一些用于创建/检查表结构的简单工具会更容易。在MySQL中,您可以使用DESCRIBE table_nameINFORMATION_SCHEMA数据库轻松访问数据字典。
  4. 我正在研究700多个表的项目,其中一些字段必须存在于每个表中(创建记录时,最后修改的时间戳)。我们有简单的脚本可以帮助解决这个问题,因为在一个表中包含所有数据都是灾难性的。