Otimizando consultas no MySql

Sempre que possível procure aperfeiçoar as suas consultas para usar o QUERY CACHE

Muitos servidores do MySQL possuem a QUERY CACHE ativado. Esta é umas das maneiras mais efetivas de melhorar o desempenho de uma consulta, sendo tudo isso transparente ao programador, tudo fica a cargo do banco, mas claro que uma ajudinha não seria nada mal.

Quando uma consulta é executada repetidas vezes, como por exemplo, em um grande portal, o mecanismo do banco de dados busca o resultado diretamente no cache, evitando excessivos acessos a disco, que como sabemos é o tipo de acesso mais dispendioso.

O principal problema é que este recurso facilmente fica escondido do programador, e muitos tendem a não usar este poderoso recurso, além do mais algumas coisas que fazemos na nossa consulta podem anular o QUERY CACHE.

// O query cache não sera utilizado
 
$resultado = mysql_query("SELECT nome FROM cidade WHERE data_fundacao >= CURDATE()");
 
// O query cache passa a ser utilizado
 
$dataFundacao =1859-03-21;
 
$resultado = mysql_query("SELECT nome FROM cidade WHERE data_fundacao >= '$dataFundacao'");

A razão pela qual o QUERY CACHE não funciona é a utilização da função CURDATE(). Todas as funções não determinísticas como CURDATE(), RAND(), etc… retornam um valor diferente cada vez que são invocadas, por isso o mecanismo do banco de dados  não pode considerar os resultados anteriores , em cache, como resultados válidos, e se vê obrigado a novamente acessar os dados diretamente no disco, custando mais para realizar a consulta.

Bom pessoal fica aí a dica, parece simples mas faz uma diferença enorme no desempenho. Até a próxima.

Bookmark e Compartilhe

julho 5, 2010 · Ramon Silva · No Comments
Tags: , , ,  · Posted in: Banco de Dados, MySQL

Leave a Reply