mysql - MariaDB 事件流动态列?

标签 mysql database-design relational-database mariadb

我有以下问题:

我们想要在 (MariaDB) 数据库中记录许多不同但相似类型的数据项。所有数据项都有一些通用参数,例如 id、用户名、状态、文件 glob、类型、注释、开始和结束时间戳。此外,还有许多(假设在 40 到 100 之间)特定于每种数据项类型的参数。

我们希望在同一个表中包含不同的数据项类型,因为它们将与其他几个数据一起显示在 Web 应用程序的一个列表中。这将看起来像一个事件流或“Facebook 墙”。

似乎使用顶级通用表与下面的特定表连接的规范化方法会导致性能不佳。我们必须执行大量联接和并集才能显示事件流,并且应用程序将频繁使用此查询进行轮询,因此查询运行速度快非常重要。

那么,就性能和存储优化而言,哪种解决方案更好?

  1. 利用 MariaDB 的动态列
  2. 只需在一个表中添加我们需要的所有不同类型的列,并接受每个数据项类型仅使用其中的几个列,即其余列将为空。
  3. 还有别的事吗?

当常规列中的大量数据为空时,我们使用常规列还重要吗?

什么时候应该使用动态列,什么时候最好使用常规列?

最佳答案

我相信您应该为您要过滤的值设置单独的列。但是,您可能有一些未过滤的值。对于这些,将它们作为 json 对象存储在单个列中可能是个好主意(易于编码/解码)。

关于mysql - MariaDB 事件流动态列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29255039/

相关文章:

php - 使用 php 和 mysql 进行 Ajax 分页

mysql - 商品属性表交集查询

database - 这张表违反了哪种范式?

ruby-on-rails - Rails - 每个子域单独的数据库

mysql - 从现有字段 MySQL 创建子表

mysql - 我在尝试更新列值 mysql 时遇到错误

php - 从MySQL表中获取特定数据

php - 显示某些 MySQL 表

database - 以牺牲 2NF 为代价获得参照完整性——这是一个合理的权衡吗?

sql - 如何在关系数据库中存储自定义实体属性