我有表players
,players_to_teams
和accounts
。 players_to_teams
的FK爲players
和accounts
。 players
有一個FirstName
和accounts
有一個Name
。索引FirstName
和Name
。爲什麼這兩個(類似的?)MySQL查詢在執行時間上差異很大?
運行
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個帳戶記錄和250k玩家記錄。
EXPLAIN
S能在這裏找到:https://gist.github.com/2368906
不宜這些查詢在相似的時間間隔執行?
你有多少個賬戶? – Rufinus 2012-04-12 16:56:32
它與連接表具有的列或記錄的數量(我不記得)有關。我記得前一段時間在數據庫類中看到了這個概念。讓我更新我的想法。 – 2012-04-12 16:57:57
也許account_id在palyers團隊沒有索引? – kappa 2012-04-12 17:03:08