2013-12-18 59 views
2

我有这两个表。有效地处理连接操作

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

我的查询是这样的

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

但它像服用青睐。什么可能是有效的方法呢?

+0

对不起,评论很糟糕,今晚看书不好......你应该至少有一个关于你加入的领域的索引(来自每张表) – DRapp

+0

@DRapp。我只想要玩家玩游戏的游戏ID。所以如果我有1000名玩家,我只需要1000名玩家玩的游戏 – user34790

回答

2

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

这应该是合理的,假设game表中几乎没有重复名称。如果有的话,你的问题可能也是纯粹的数据返回量。

+0

我正在尝试按照你的说法创建一些索引。但创建索引就像是花时间。我该怎么办? – user34790

+0

@ user34790。 。 。稍等一会。你有1000万行,所以需要一些时间(也许几十分钟)。 –

+0

它已经超过半天,并没有完成 – user34790

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上找到某种索引。