2012-09-05 134 views
1

我在加入我的表時遇到了一些問題。mysql加入,似乎不起作用(Select_full_join)

當進行查詢時,我得到一個紅旗:

Select_full_join

的連接不使用索引的數量。如果此值不爲0,則應仔細檢查表格的索引。

...我也得到了很多Slow_queries要花

的還有什麼我需要做的,使其工作,除了建立一個索引? 我看到你可以添加表或外鍵之間的關係,也許這就是我所需要的?

我是一個noob,當涉及到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 
+2

你應該在連接所基於的列上定義一個索引。另外,確保它們屬於同一類型。外鍵的定義不是必需的,但可能使事情變得更容易。 –

+2

請顯示您的表格結構,包括任何鍵。 –

+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;