我有这个简单的查询,运行时间为0.55秒。
SELECT tr.*
FROM Tournament_Result tr, Game g, Tournament t
LEFT JOIN Tournament_Type tt ON t.intType = tt.intTournamentType
WHERE tr.intTournamentId = t.intTournamentId
AND t.intGameId = g.intGameId
AND t.strStatus = 'live'
ORDER BY dtmCreated DESC
所有联接都是键,主键或索引键。如果我删除左连接“LEFT JOIN Tournament_Type tt ON t.intType = tt.intTournamentType”,则查询立即运行。
所以我认为它必须是“t.intType = tt.intTournamentType”加入,但我检查了两个键都是凹凸不平。不知道该怎么做。我甚至尝试过直接连接,它总是使用Tournament_Type表来减慢它的速度。我甚至在它上面运行了“OPTIMIZE”命令。
有什么想法吗?
提前致谢!
阿明
答案 0 :(得分:1)
查询中缺少某些内容。 Tournament_Type 表格为 LEFT JOINED 和
来自 Tournament_Type 表的字段在任何其他联接中或在SELECT
中使用如果您要从 Tournament_Type 表中添加一列以显示在结果中
SELECT Tournament_Result.*,
(select <<Col1>> from Tournament_Type where Tournament_Type.intTournamentType=t.intType)
FROM Game
inner join Tournament on Tournament.intGameId = Game.intGameId
inner join Tournament_Result on Tournament_Result.intTournamentId = Tournament.intTournamentId
WHERE Tournament.strStatus = 'live'
ORDER BY dtmCreated DESC