International-Aerobatic-Club / iaccdb

IAC Aerobatic Contest Database
iaccdb.iac.org
1 stars 1 forks source link

Reduce database queries for `ContestsController#show` #266

Open djmolny opened 3 months ago

djmolny commented 3 months ago

Loading https://iaccdb.iac.org/contests/798 (2022 Nationals, an admittedly large event) generates 4,467 database queries! Of those, the vast majority appear to be repeats:

   1466 SELECT  `members`.* FROM `members`
   1398 SELECT  `pilot_flights`.* FROM `pilot_flights`
   1398 SELECT  `flights`.* FROM `flights` INNER JOIN `pilot_flights` ON `flights`.`id` = `pilot_flights`.`flight_id`
     73 SELECT  `make_models`.* FROM `make_models`
     73 SELECT  `airplanes`.* FROM `airplanes`
     17 SELECT `categories`.* FROM `categories` INNER JOIN `categories_flights` ON `categories`.`id` = `categories_flights`.`categor
y_id`
     12 SELECT `members`.* FROM `members`
      6 SELECT `pf_results`.* FROM `pf_results` INNER JOIN `pilot_flights` ON `pilot_flights`.`id` = `pf_results`.`pilot_flight_id` 
INNER JOIN `flights` ON `flights`.`id` = `pilot_flights`.`flight_id`
      6 SELECT `pc_results`.* FROM `pc_results`
      6 SELECT `jc_results`.* FROM `jc_results`
      6 SELECT `flights`.* FROM `flights` INNER JOIN `categories_flights` ON `flights`.`id` = `categories_flights`.`flight_id`
      6 SELECT  1 AS one FROM `pc_results`
      4 SELECT `flights`.* FROM `flights`
      4 SELECT  1 AS one FROM `flights`
      1 SELECT  `contests`.* FROM `contests`
djmolny commented 3 months ago

Additional analysis: