mysql - 更多列或一个数组,什么是更好的性能?
问题描述
我想制作一个游戏(我的世界)区域数据库和玩家的权限。
这些是我的餐桌创意。
示例 1)
列 ---------------- 数据类型
worldname ------------ 1 ----- (INT(10)) ----- PK , NN
regionname ----------- 1 ----- (INT(10)) ----- PK , NN
owner ---------------- --- 2 ----- (INT(10))
成员 ---------------- 5, 13, 54, 246, 38295, 564, 2535, 5364, 411, 9 ----- (VARCHAR(128))
这个和我收到 'member' 并由 ', ' 分割成数组。
示例 2)
列 ---------------- 数据类型
worldname ------------ 1 ----- (INT(10)) ----- PK , NN
regionname ----------- 1 ----- (INT(10)) ----- PK , NN
owner ---------------- --- 2 ----- (INT(10)
member1 -------------- 5 ----- (INT(10))
member2 -------- ------ 13 ----- (INT(10))
member3 -------------- 54 ----- (INT(10))
member4 ---- ---------- 246 ----- (INT(10))
member5 -------------- 38295 ----- (INT(10))
member6 -------------- 564 ----- (INT(10))
member7 -------------- 2535 ----- (INT( 10))
member8 -------------- 5364 ----- (INT(10))
member9 -------------- 411 ---- - (INT(10))
member10 ------------- 9 ----- (INT(10))
哪一个性能更好?
解决方案
两者都不!
最佳实践是创建三个单独的表,其中一个保存用户数据,一个保存您的世界,最后一个保存这两个表之间的关系。
所以表1:
world
列:
id
name
region
owner
。. .
表 2:
user
列:
id
username
。. .
表 3:
world_user
列:
world_id
user_id
。. .
推荐阅读
- flutter - 如何从文档快照中获取特定字段
- r - 不同颜色的评论
- c++ - 将具有三个变量的向量与具有两个变量的向量进行比较
- spring-boot - 我正在部署一个简单的 Spring Boot 应用程序但它显示此错误
- java - 哈希映射没有正确添加元素
- android - 卡片视图阴影效果仅顶部反应原生
- javascript - 如何从 JQuery 代码重写纯 JavaScript 代码?
- reactjs - 当所有数据都已路由到此屏幕时,如何将此移动无字段更新到 Firestore 数据库
- php - 我如何用我自己的风格编辑learnpress bydefault archive-course.php 页面?
- javascript - 为什么我的表单即使在溢出后也没有滚动:滚动?