2017-02-16 102 views
0

我不是SQL专家。我需要优化以下查询:SQL查询优化 - 添加连接等

SELECT trn.runner_id, 
    tr.race_id, 
    trr.position, 
    trr.program_number, 
    trn.horse_name, 
    trc.track_id, 
    tr.race_number, 
    trc.ticket_name, 
    trc.race_card_id, 
    trn.couple_type, 
    tt.country, 
    tr.post_time, 
    tr.sp_fav 
FROM tb_race_results trr, 
    tb_races tr, 
    tb_race_runners trn, 
    tb_race_card trc, 
    tb_tracks tt 
WHERE trr.race_id=514729 
     AND tr.race_id=trr.race_id 
     AND tr.race_card_id=trc.race_card_id 
     AND trr.program_number=trn.program_number 
     AND trn.race_id=trr.race_id 
     AND tt.track_id=trc.track_id 
ORDER BY trr.position 

我已经添加了所需的索引,但查询性能很差(〜1秒)。

+0

添加模式,否则,我们不会有任何数据的想法。 – 2017-02-16 11:14:19

+0

你正在使用哪些DBMS? –

+3

今天提示:切换到现代,明确的'JOIN'语法。易于编写(没有错误),更易于阅读和维护,并且在需要时更容易转换为外部联接。 – jarlh

回答

2

SELECT trn.runner_id, 
 
    tr.race_id, 
 
    trr.position, 
 
    trr.program_number, 
 
    trn.horse_name, 
 
    trc.track_id, 
 
    tr.race_number, 
 
    trc.ticket_name, 
 
    trc.race_card_id, 
 
    trn.couple_type, 
 
    tt.country, 
 
    tr.post_time, 
 
    tr.sp_fav 
 
FROM tb_race_results trr 
 
INNER JOIN tb_races tr ON tr.race_id=trr.race_id 
 
INNER JOIN tb_race_runners trn On trn.race_id=trr.race_id On trr.program_number=trn.program_number 
 
INNER JOIN tb_race_card trc On tr.race_card_id=trc.race_card_id 
 
INNER JOIN tb_tracks tt  On tt.track_id=trc.track_id 
 

 
WHERE trr.race_id=514729