「 COMPLEX QUERY 」で示されるクエリを繰り返さないように、クエリを最適化しようとしています。これは 2 回使用され、両方とも同じ結果になります。
元のクエリ
SELECT news.*
FROM news
INNER JOIN((SELECT myposter
FROM (SELECT **COMPLEX QUERY**))
UNION
(SELECT myposter
FROM `profiles_old` prof2
WHERE prof2.profile_id NOT IN (SELECT **COMPLEX QUERY**))) r
ON news.profile = r.p
このようなことが可能かどうか疑問に思っていました:
SELECT news.*
FROM (SELECT **COMPLEX QUERY**) complexQuery,
news
INNER JOIN ((SELECT myposter
FROM complexquery)
UNION
(SELECT myposter
FROM `profiles_old` prof2
WHERE prof2. profile NOT IN (SELECT myposter
FROM complexQuery))) r
ON news. profile = r.p
Mysql はそのタイプのクエリの何らかのキャッシュを行いますか?