Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多对多关系数据库,可供许多用户选择_Mysql_Database_Many To Many - Fatal编程技术网

Mysql 多对多关系数据库,可供许多用户选择

Mysql 多对多关系数据库,可供许多用户选择,mysql,database,many-to-many,Mysql,Database,Many To Many,我们目前正在开发一款带有数据库的游戏,玩家可以在数据库中存储某些物品。我总是在学校和球场上学习使用选项1,但我的同事说是选项2 我们必须选择一个选项,我们现在要问的问题是:这两个选项中哪一个是最好和最快的 还有,对于5万用户,哪一个是最好和最快的 选项1。你说得对 如果你使用选项2,你会后悔的。它是非规范化的。更新那些以逗号分隔的itemID值列表非常困难。您必须使用事务来读取、更改和写回值字符串 此外,选项1可以利用数据库索引进行更高效的搜索。询问您的朋友如何找到itemId=15的所有用户。

我们目前正在开发一款带有数据库的游戏,玩家可以在数据库中存储某些物品。我总是在学校和球场上学习使用选项1,但我的同事说是选项2

我们必须选择一个选项,我们现在要问的问题是:这两个选项中哪一个是最好和最快的

还有,对于5万用户,哪一个是最好和最快的


选项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
可能重复的