加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 数据库 > MySql > 正文

mysql – 如何在使用较少内存的单列中存储多个值?

发布时间:2020-12-30 23:42:11 所属栏目:MySql 来源:互联网
导读:我有一个用户表,其中1列存储用户的“角色”.我们可以为特定用户分配多个角色.然后我想在“角色”列中存储角色ID.但是,如何将多个值存储到单个列中以便以易于使用的方式保存内存?例如,使用逗号分隔字段存储并不容易并且使用内存.有任何想法吗?最佳答案如果用

我有一个用户表,其中1列存储用户的“角色”.
我们可以为特定用户分配多个角色.

然后我想在“角色”列中存储角色ID.

但是,如何将多个值存储到单个列中以便以易于使用的方式保存内存?例如,使用逗号分隔字段存储并不容易并且使用内存.

有任何想法吗?

最佳答案 如果用户可以拥有多个角色,那么拥有存储此信息的user_role表可能会更好.它被规范化,并且查询起来会容易得多.

像这样的表:

user_id | role
--------+-----------------
      1 | Admin
      2 | User
      2 | Admin
      3 | User
      3 | Author

将允许您查询具有特定角色的所有用户,例如SELECT user_id,user.name FROM user_role JOIN user WHERE role =’Admin’,而不必使用字符串解析从列中获取详细信息.

除此之外,这将更快,因为您可以正确地索引列,并且比任何将多个值放入单个列的解决方案所占用的空间略大 – 这与关系数据库的设计是相对立的.

不应该存储它的原因是它效率低,因为DCoder在comment to this answer上声明.要检查用户是否有角色,需要扫描用户表的每一行,然后是“角色”必须使用字符串匹配扫描列 – 无论此操作如何公开,RMDBS都需要执行字符串操作来解析内容.这些是非常昂贵的操作,并没有完善的数据库设计.

如果您需要一个专栏,我强烈建议您不再遇到技术问题,而是人员管理问题.将其他表添加到正在开发的现有数据库中应该不难.如果这不是您有权做的事情,请向合适的人解释为什么需要额外的表 – 因为munging将多个值组合到一个列中是个坏主意.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读