MySQLがキャッシュできることを読みましUNION's
たが、同時にそれを読みました。
クエリの開始時にコメント(およびスペース)を避ける–クエリキャッシュは、クエリをキャッシュできるかどうかを確認するために単純な最適化を行います。前述したように、SELECTクエリのみがキャッシュされるため、クエリの最初の文字を調べ、「S」の場合はキャッシュ内のクエリルックアップを続行し、そうでない場合はスキップします。
ソース:http ://www.mysqlperformanceblog.com/2006/07/27/mysql-query-cache/
そうは言っても、UNIONは括弧で始まるので、どのようにキャッシュされますか?
mysql.comによると:
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
最初の文字は「S」ではないので、スキップされます!?
私はあなたがこのようなことをすることができるのを見ました。
SELECT * FROM (
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION ALL
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10)
) AS u
しかし、sub-select
そうなると、そのページによると、キャッシュされません。
では、どのようにしUNION
てキャッシュを取得するのでしょうか。