mysql查询优化程序

5jvtdoz2  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(239)

我有一个用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,完成位置。
如有任何建议,我们将不胜感激。
劳拉

7hiiyaii

7hiiyaii1#

对于此查询:

insert into smartform.historic_jockey (runner_id, jockyWins )
    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
           ) as jockeyWins
    from smartform.historic_runners_races runners ;

对于这个查询,您需要一个索引 historic_runners_races(jocky_id, finish_position, race_id) . 运行 select 独立思考,看看这是否有帮助。

相关问题