我有一个用mysql写的查询,它花了,感觉像,荒谬的时间来完成。我真的需要加快这个查询,它需要超过7小时才能完成。表中有200万行正在查询-历史\u runner \u races。我想了很多不同的方法来优化它,我也尝试过sql server,以防更快。我调查了所有不同类型的索引组合,发现它们在整个运行时间中并没有产生巨大的差异。
查询是
insert into smartform.historic_jockey
SELECT runners.id,
( select count(1)
FROM smartform.historic_runners_races ru
where ru.jockey_id = runners.jockey_id
and ru.race_id < runners.race_id
and ru.finish_position = 1
) jockeyWins
FROM smartform.historic_runners_races as runners ;
我真的很困惑。我的索引是关于跑步者,比赛id,然后是骑师,比赛id,完成位置。
如有任何建议,我们将不胜感激。
劳拉
1条答案
按热度按时间7hiiyaii1#
对于此查询:
对于这个查询,您需要一个索引
historic_runners_races(jocky_id, finish_position, race_id)
. 运行select
独立思考,看看这是否有帮助。