UNION
combina subconsultas, e essas subconsultas não são consideradas pelo mecanismo query cache
, apenas a consulta completa e seu resultado final são.
Como exemplo, imagine que essa consulta seria executada por um aplicativo com frequência:
select 'nb1', count(*) from table1 group by col1
UNION
select 'nb2', count(*) from table2 group by col2
UNION
select 'nb3', count(*) from table3 group BY col3
Ao reexecutar isso e nenhuma alteração ocorreu na tabela1, na tabela2, na tabela3, o cache de consulta pode ignorar a execução e reenviar o resultado em cache.
"Não funciona para partes da UNIÃO" significa que se outra etapa na aplicação executar esta consulta:
select 'nb1', count(*) from table1 group by col1
em seguida, mesmo que o resultado já esteja armazenado em cache como parte do resultado da consulta UNION, o cache de consulta não consegue reconhecer isso para aproveitá-lo. Ele irá executá-lo e colocar seu resultado no cache como uma consulta completamente independente.