我有以下问题:
我们要在(MariaDB)数据库中记录很多不同但相似的数据项。所有数据项都有一些通用参数,例如ID,用户名,状态,文件Glob,类型,注释,开始和结束时间戳记。此外,还有每种类型的数据项特有的许多参数(例如40到100之间)。
我们希望在同一表中具有不同的数据项类型,因为它们将与其他一些数据(在发生时一起)一起显示在Web应用程序的单个列表中。这将显示为活动流或“ Facebook墙”。
似乎将顶级通用表与下面的特定表结合在一起的规范化方法会导致性能下降。为了显示活动流,我们将必须执行大量的联接和联合操作,并且应用程序将频繁地对该查询进行轮询,因此,快速运行查询很重要。
那么,就性能和存储优化而言,哪个是更好的解决方案?
利用MariaDB的动态列
只需在一个表中添加我们需要的所有不同种类的列,并接受每种数据项类型将仅使用其中几列,即其余的将为null。
还有什么吗
当常规列中的许多数据为空时是否使用常规列是否有关系?
什么时候应该使用动态列,什么时候应该使用常规列?
最佳答案
我相信您应该为要过滤的值使用单独的列。但是,您可能有一些未过滤的值。对于那些对象,最好将它们作为json对象存储在单个列中(易于编码/解码)。