ここで行っているのは、重複する予約とユーザーを取得することです。こちらの予約券は2回印刷できません。ユーザーがチケット トラッカー テーブルを印刷すると、そのレコードが更新されます。ユーザーが同じチケットを 2 回印刷すると、重複としてマークされます。ここでサブクエリが行うことは、重複としてマークされた予約 ID を返すことです。
SELECT t1.id AS res_id,
t1.tx_id,
t1.tx_date,
t1.bx_date,
t1.method,
t1.theater_id,
t1.showtime_id,
t1.category_id,
t1.amount,
t1.fname,
t1.status,
t1.mobile,
u.username,
t2.*
FROM `reservation` AS t1
INNER JOIN
( SELECT *
FROM `tracker`
WHERE reservation_id IN
( SELECT reservation_id
FROM `tracker`
GROUP BY reservation_id HAVING ( METHOD = 1
AND TYPE = 0
AND COUNT(*) > 1 )
OR ( METHOD = 1
AND TYPE = 1
AND COUNT(*) > 1 )
OR ( METHOD = 2
AND TYPE = 2
AND COUNT(*) > 0 )
OR ( METHOD = 3
AND TYPE = 0
AND COUNT(*) > 0 )
OR ( METHOD = 3
AND TYPE = 1
AND COUNT(*) > 1 )
OR ( METHOD = 3
AND TYPE = 3
AND COUNT(*) > 0 )) ) AS t2 ON t1.id = t2.reservation_id
INNER JOIN `users` AS u ON u.id = t2.user_id
WHERE t2.resolved = 0
AND t2.duplicate = 1
ORDER BY t2.issue_date DESC, t1.id DESC
EXPLAIN 上記クエリのコマンド。
私は何をすべきか?インデックスの場合、どのキーを使用すればよいですか? 索引付けするキーを決定するにはどうすればよいですか? サブクエリによって速度が低下することはわかっています 速度低下を解消するには、どのような手順に従う必要がありますか?