Cache de consulta do MySQL - Que parte das chamadas UNION são armazenadas?

1

Eu estava lendo sobre o mysql query cache e li isso ..

Cache somente de consultas completas - o que significa que ele não funciona para subseletos, exibições em linha, partes da UNION. Isso também é um mal-entendido comum.

O que significa por "partes da UNIÃO"? Eu estou trabalhando em um site que faz uso de um monte de UNION e acho que eles estão sendo armazenados em cache, mas eu quero ter certeza.

Obrigado!

    
por Brett 21.08.2012 / 09:40

1 resposta

3

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.

    
por 21.08.2012 / 10:42

Tags