有效地处理连接操作

时间:2013-12-18 02:52:44

标签: mysql join

我有这两张桌子。

表1中有1000万个条目,其中包含gameid和gamename列 表2中有几千个条目具有列userid和gamename。我希望通过映射两个表中的游戏名来为每个用户获取相应的gameid。

我的查询就像这样

SELECT game.id FROM game RIGHT JOIN player ON game.game_name=player.game_name

但这就像花了很多年。什么是有效的方法呢?

2 个答案:

答案 0 :(得分:2)

如果您希望快速查找,请在game(game_name, gameid)上创建索引。

这应该是合理的,假设game表中的重复名称很少。如果有,您的问题也可能是返回的数据量很大。

答案 1 :(得分:2)

考虑使用......

EXPLAIN SELECT game.id FROM game RIGHT JOIN player ON game.game_name=player.game_name

初始EXPLAIN将让MySQL通过对here输出的良好解释告诉您它正在做什么。

您最有可能想要game.game_nameplayer.game_name上的某种索引。