mysql - MYSQL:带有索引虚拟列的 JSON VS 普通列和规范化
问题描述
问题陈述
我有一张users
由 2 种不同类型的用户A和B组成的大桌子。目前,它们共享一些字段,而其他字段是A-only或B-only。
现在,通常在此表上进行适当的规范化,我们最终可以拥有 1 个共享表和 2 个具有A-fields和B-fields的相关表。但是,我的目标是减少空间,但尽可能保持相同的性能。
我的解决方案
我的解决方案是使用 JSON 类型来存储在 2 种不同用户类型之间不共享的字段,但同时为需要索引的字段创建生成和索引的虚拟列。它应该节省空间,因为 MySQL 不会为未使用的字段分配空间,同时由于虚拟列 + 索引,它保持或多或少相同的性能。此外,这些字段不会用作外键,因此虚拟列对我来说不是限制。
问题
环顾四周,似乎人们不建议使用 JSON 类型来避免在未使用的字段上浪费空间。相反,仍然强烈建议使用带有单独表的普通字段。您是否认为我使用 JSON 而不是实际字段来接近错误的方式?如果是,为什么?
解决方案
推荐阅读
- javascript - 删除 Intellij 中的错误消息以使用绝对路径导入
- c++ - 函数模板部分专业化 - 有什么解决方法吗?
- php - 适用于 PHP 的 AWS 开发工具包 等待转录作业,直到状态为“已完成”
- azure - Azure:不同 vnet 中的 Webapp 插槽
- python - Python Pandas – 如何抑制 PerformanceWarning?
- oracle - ORA-00936 缺少表达式错误
- c# - 防止 AngleSharp 中的重定向
- calculated-columns - 使用 Microsoft Access IIf 函数计算值
- matlab - 如何在矩阵的行中找到重复的数字模式
- javascript - Javascript在后台下载远程图片