asl*_*lum 1 php mysql performance
我有一张桌子GAMES和另一张桌子PLAYERS.目前每个"游戏"都有一列,players_in_game但我没有任何回应PLAYERS.由于这个列是一个数组(以逗号分隔的玩家ID#列表),我认为让每个玩家的记录也包含他们所属游戏的列表可能会更好.另一方面,在两个单独的表中复制信息实际上可能需要更多的DB调用.
从视角来看,游戏中不可能有十几个玩家(通常是4-6是常态),但可能会有大量游戏.
有没有一种好方法可以找出哪种更有效?谢谢.
规范化通常是一件好事.表中的逗号分隔列表表示表格迫切需要外键.如果您担心额外的查询,请查看JOINING
dbo.games
+----+----------+
| id | name |
+----+----------+
| 1 | war |
| 2 | invaders |
+----+----------+
dbo.players
+----+----------+---------+
| id | name | game_id |
+----+----------+---------+
| 1 | john | 1 |
| 2 | mike | 1 |
+----+----------+---------+
SELECT games.name, count(players.id) as total_players FROM games INNER JOIN players ON games.id = players.game_id GROUP BY games.name;
Result:
+-----------+--------------+
| name |total_players |
+-----------+--------------+
| war | 2 |
| invaders | 0 |
+-----------+--------------+
Run Code Online (Sandbox Code Playgroud)
旁注:去Hokies :)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |