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.
julho 5, 2010
·
Ramon Silva ·
No Comments
Tags: otimização de query, performance, query cache, tunning · Posted in: Banco de Dados, MySQL

Leave a Reply