J'ai une table de tous Major League jeux de base-ball qui est structuré comme celui-ci:Est-ce que je peux rendre ce compte MySQL avec COUNTs plus efficace?
**Game**
id (int)
home_team_id (int)
away_team_id (int)
home_score (int)
away_score (int)
date (date)
J'ai aussi table nommée "ticket" qui a des billets vendus à différents jeux:
**Ticket**
id (int)
game_id (int)
price (float)
time_sold (datetime)
Je d aimer exécuter une requête MySQL qui, pour chaque liste de tickets, correspond à l'enregistrement de l'équipe au domicile et à l'extérieur au moment où le billet a été vendu. J'ai utilisé ceci:
SELECT ticket.id, game.home_team_id AS Home, game.away_team_id AS Away,
(SELECT COUNT(game.id) FROM game WHERE game.date < DATE_SUB(ticket.time_sold, INTERVAL 1 DAY) AND (game.home_score > game.away_score AND game.home_team = Home OR game.away_score > game.home_score AND game.away_team = Away)) as home_team_wins
FROM ticket
JOIN game
ON game.id = ticket.game_id
Le problème est que cette requête est extrêmement lente. J'ai indexé toutes les colonnes dans la table de jeu et tout sauf le prix dans la table des tickets, mais c'est toujours douloureusement lent. Est-ce que quelqu'un peut suggérer comment je peux accélérer cela?