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は、集計されていないすべての fieldS を使用する必要があります

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 に答える