我有表球員,部族和clanmembers玩家連接到氏族。我想要做的就是要求所有玩家擁有戰隊信息,不管他們是否有戰隊,並按玩家排序。排名(索引)。MySQL使用文件排序,並導致性能下降
SELECT * FROM球員LEFT JOIN clanmembers ON clanmembers.player = players.id LEFT JOIN部族ON clanmembers.clan = clans.id ORDER BY 排名DESC LIMIT 0,100;
上面的查詢正常工作,但由於某種原因,它掃描整個玩家表(很多行),查詢速度很慢。如果我選擇玩家*,而不是性能突增,只有100行被檢查,而不是所有玩家。
我在做什麼錯在這裏?我不明白爲什麼添加戰隊東西選擇使查詢掃描整個球員表時,連接保持完全一樣。
編輯2:Query results (EXPLAIN) here
請添加兩個查詢的解釋,並列出對2個表和它們包含的字段索引的結果。 – Shadow
已添加到原始帖子。由於Javi的回答,添加了id_rank,但沒有奏效。 –