我有表球员,部族和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,但没有奏效。 –