简单而慢的查询

时间:2012-09-03 15:15:34

标签: mysql database database-design

我有这个简单的查询,运行时间为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”命令。

有什么想法吗?

提前致谢!

阿明

1 个答案:

答案 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