多对多关系数据库,可供大量用户选择

4nkexdtk  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(376)

我们目前正在开发一款带有数据库的游戏,玩家可以在数据库中存储某些项目。我总是在学校和球场上学会使用选项1,但我的同事说的是选项2。
我们必须选择一个选项,我们现在要问的问题是:两个选项中哪一个是最好的和最快的?
以及哪一个是最好的和最快的与5万用户?

3xiyfsfu

3xiyfsfu1#

方案1。你说得对。
如果你使用选项2,你会后悔的。它是非标准化的。更新那些以逗号分隔的itemid值列表非常困难。您必须使用事务来读取、更改和写回值字符串。
另外,选项1可以利用数据库索引进行更有效的搜索。询问您的朋友如何找到itemid=15的所有用户。让他帮你写那个问题。在选项1中,您可以使用

SELECT UserId
    FROM tbl
   WHERE ItemId = 15

您可以使用查询生成用于显示的选项2。展示才是最好的。

SELECT UserId, GROUP_CONCAT(DISTINCT ItemId ORDER BY ItemID) ItemId
       FROM linktable
      GROUP BY UserId

相关问题