고등학교 스포츠 기록이 학교 출석에 미치는 영향을 분석하고 있다고합니다.mysql subselect 대안
그래서 각 행은 고등학교 농구 경기에 해당하는 표가 있습니다. 각 게임은 원정 팀 ID와 홈 팀 ID (FK에서 다른 "팀 테이블"까지)와 홈 스코어와 어웨이 스코어와 데이트를 가지고 있습니다. 나는이 시즌 농구 경기에 출석을 맞추는 질의를 쓰고있다.
내 샘플 출력은 지금 각 팀 내 분석 이전 시즌을 어떻게했는지 추가 할 (#_students_missed_class
, day_of_game
, home_team
, away_team
, home_team_wins_this_season
, away_team_wins_this_season
)
될 것입니다. 글쎄, 나는 그들의 이전 시즌이 게임 테이블에 저장되어 있지만 나는 subselect와 함께 그것을 성취 할 수 있어야한다. 그래서 지금은 전년 대비 계산 된 모든 승리를 가지고있는 HOME_TEAM의 ID를 참조 team-table.id이 경우
SELECT COUNT(*) FROM game_table
WHERE game_table.date
BETWEEN 'start of previous season' AND 'end of previous season'
AND (
(game_table.home_team = team_table.id
AND game_table.home_score > game_table.away_score)
OR (game_table.away_team = team_table.id
AND game_table.away_score > game_table.home_score))
:
그래서 내 주요 select 문에 나는 부속을 추가합니다.이 계산 방법은 시간도 자원 집약도 아닙니다. Explain SQL은 Type 필드에 ALL이 있고 키를 사용하지 않고 쿼리 시간이 초과되었음을 보여줍니다. 내가 어떻게 subselect와 함께보다 효율적인 쿼리를 수행 할 수 있는지 잘 모르겠습니다. 이 쿼리 중 4 개 (가정용, 자택 용, 멀리 떨어져있는 것, 떨어져있는 것)를 작성하는 것이 바람직하지 않은 것 같습니다.
나는 이것이 더 명쾌 할 수 있다고 확신한다. 누구나 궁금한 점이 있으시면 내일 색을 추가하겠습니다.
감사합니다. 나는 적절한 예의가 있다는 것을 결코 알지 못했습니다. 나는 돌아가서 그것을했거나 앞으로도 할 것이다. –