【发布时间】:2012-04-12 16:51:27
【问题描述】:
我有表 players、players_to_teams 和 accounts。 players_to_teams 与 players 和 accounts 有一个 FK。 players 有一个 FirstName 和 accounts 有一个 Name。 FirstName 和 Name 都已编入索引。
跑步
SELECT players_to_teams.id
FROM players_to_teams
INNER JOIN players
ON players.id = players_to_teams.player_id
ORDER BY players.FirstName
在 0.004 秒内执行。
SELECT players_to_teams.id
FROM players_to_teams
INNER JOIN accounts
ON accounts.id = players_to_teams.account_id
ORDER BY accounts.Name
执行时间超过 7 秒。
有 30,000 个帐户记录和 250,000 个玩家记录。
EXPLAINs 可以在这里找到:https://gist.github.com/2368906
这些查询不应该在相似的时间空间中执行吗?
【问题讨论】:
-
你有几个账户?
-
它与连接表的列或记录的数量(我不记得)有关。我记得不久前在数据库类中看到过这个概念。让我刷新一下思路。
-
可能队伍中的 account_id 没有被编入索引?
-
@Rufinus - 我有一个错字。我有 30,000 条帐户记录
-
@kappa - account_id 在 player_to_team 中被索引(我认为)。你能仔细检查一下那个要点吗?