2012-09-05 4 views
1

테이블에 조인하는 데 문제가 있습니다.mysql이 조인되고 작동하지 않습니다 (Select_full_join)

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

조인의 기반이되는 열에 인덱스를 정의해야합니다. 또한 유형이 동일한 지 확인하십시오. 외래 키의 정의는 필요하지 않지만 일을 더 쉽게 할 수 있습니다. –

+2

키를 포함하여 테이블 구조를 보여주십시오. –

+1

색인을 통해 문제가 해결 될 수도 있고 해결되지 않을 수도 있습니다. 열쇠가 당신의 질문을 보여주고 있습니다. 질의가 없으면 아무도 도우려고하지 않는 것은 어둠 속에서 촬영하는 것입니다. –

답변

1

요 UR 쿼리가 집계 함수를 사용하고 있다면 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; 
관련 문제