1

我在加入我的桌子时遇到了一些问题。

进行查询时,我得到一个红旗:

Select_full_join

不使用索引的连接数。如果此值不为 0,则应仔细检查表的索引。

...我也得到了很多slow_queries

除了设置索引之外,我还需要做什么才能使其正常工作?我看到你可以在表之间添加关系,或者外键,也许这就是我需要的?

说到mysql,我是个菜鸟。

这是我的查询:

SELECT 
    m.numberOfPlayers as totalNumberOfPlayers,
    COUNT(p.userId) AS currentNumberOfPlayers 
FROM 
    matches_active m 
        LEFT JOIN matches_players p ON p.matchId = m.id 
WHERE 
    m.id = 5922;

...这是我的桌子:

matches_active

id   int(11)
numberOfPlayers int(11)

PRIMARY  id 

matches_players

userId   int(11)
matchId  int(11)   

PRIMARY    userId 
           matchId 
4

1 回答 1

1

当您的查询使用聚合函数时,您应该对GROUP BY所有未聚合的字段

SELECT 
    m.numberOfPlayers as totalNumberOfPlayers,
    COUNT(p.userId) AS currentNumberOfPlayers 
FROM 
    matches_active m 
        LEFT JOIN matches_players p ON p.matchId = m.id 
GROUP BY
    m.numberOfPlayers
WHERE 
    m.id = 5922;
于 2012-09-05T16:19:03.460 回答