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

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

概述我有一个用户表,其中1列存储用户的“角色”.我们可以为特定用户分配多个角色.然后我想在“角色”列中存储角色ID.但是,如何将多个值存储到单个列中以便以易于使用的方式保存内存?例如,使用逗号分隔字段存储并不容易并且使用内存.有任何想法吗?最佳答案如果用户可以拥有多个角色,那么拥有存储此信息的user_role表可能会更好.它被规范化,并且查询起来会容易得多.像

我有一个用户表,其中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将多个值组合到一个列中是个坏主意. 总结

以上是内存溢出为你收集整理的mysql – 如何在使用较少内存的单列中存储多个值?全部内容,希望文章能够帮你解决mysql – 如何在使用较少内存的单列中存储多个值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存