これを最適化する方法のヒントを探しています。
SELECT u.uid,
u.username,
u.nid,
wd.pay
FROM (users_data AS u
LEFT JOIN winners_data wd
ON u.nid = wd.nid
AND u.uid = wd.uid)
LEFT JOIN dp_node dn
ON u.nid = dn.nid
WHERE u.uid = ".$val."
AND ((dn.TYPE = 'event'
AND (SELECT Count(nid)
FROM tournament_event
WHERE nid = u.nid
AND type_value IN ('A','B','C')) > 0)
OR (dn.TYPE = 'new_event'
AND (SELECT Count(nid)
FROM user_tournament_event
WHERE nid = u.nid
AND type_0_value IN ('Y','X')) > 0))
ORDER BY nid ASC
実際、$ valは、ループの一部として一度に1つずつ次のクエリから取得されるuidに他なりません。
SELECT DISTINCT(dump.uid)FROM Leader_Jdump AS dump
この部分も上記のクエリに追加する方法はありますか?MySQLレベルでそれができればもっと速くなると思います。