While I'm not an expert on this, I do know there are a few reasons that breaking things down further will help. I gave a pretty direct hint for improvement when I 'badmouthed' the current schema: all the results are all in one table. So splitting things up I believe would be better. Maybe memory or efficiency aren't the biggest concerns now since there are 'only' 75,000 records. But what about in 10 years when there may be 1,000,000? At what point is it time to improve things?
By breaking the results database up, you can reduce memory usage and decrease query time quite a bit. Each competition could have its own table referencing individual events, which in turn would hold the actual results. Doing this for the WCA results means result tables lose half their current columns (big drop in memory usage!) and can be queried for individual competition results significantly faster as ~10^3 fewer items need to be searched through. By using appropriate table prefixes, you could even select results from tables without needing to go through indexes.
After breaking things up (if you don't want to use subqueries or joins, etc), tables to index event results by speed and competitor can be made. Mem
usage would go back up some, but not to where it was initially. Results can be queried just as fast for all rankings, and significantly faster for individual competition or competitor results.
This also essentially eliminates the chance of a fatal mistake like Tyson's (so yes, the database structure did contribute). If a competitor's name needs to be changed, using a more normalized schema it is changed once, not 100 times in some big results table. Assigning numeric uids means even WCAIDs can be changed by updating only 1 row. The results tables shouldn't even need to be touched. If a result needs to be modified, it is updated in just one event on just one table. No results from other competitions or events are touched. Damage is mitigated if tables are ruined.