3

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」コマンドも実行しました。

何か案は?

前もって感謝します!

アルミン

4

1 に答える 1

1

クエリに欠けているものがあります。Tournament_Type テーブルは LEFT JOINEDであり、

また、他の結合または SELECT で使用されるTournament_Typeテーブルのフィールドはあり ません

結果に表示されるようにTournament_Type テーブルから 1 つの列を追加する場合

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
于 2012-09-03T16:03:12.837 に答える