我描述一个游戏3个MySQL表:最有效的方法来查询一个多对多的关系表
- 游戏列表{游戏ID,...原发性(游戏ID)} =存储关于每场比赛会话。
- userlist {userId,... with Primary(userId)} =存储每个用户的信息。
- game2user {gameId,userId ... with Primary(gameId,userId)} =存储哪个用户参与每个游戏会话(一个游戏会话给两个或更多用户)。
现在,对于某个userId,我需要检索包含该游戏会话中涉及的所有用户的名称的游戏列表。
我就出来了迄今为止最好的是:
SELECT gl.gameid, gl.type, [...], ul.userid, ul.username
FROM userlist as ul, gamelist as gl, game2users as g2u
WHERE g2u.userid = a_certain_numeric_id AND
ul.userid = g2u.userid AND
gl.gameid = g2u.gameid`
这将会从游戏排行榜中的唯一行,但只获取给定用户的用户名,而不是他的同球员。
问题是如何在性能(时间)方面有效地执行此操作,并且最好不进行单独的查询?谢谢。
你有表结构? –