O problema que estou tentando resolver: É sabido que nem todos os desenvolvedores sabem o que é EXPLAIN no MySql, e nem todos sabem como usá-lo. Grande parte deles considera o MySql como uma caixa preta, não importa qual seja a consulta que eu escreva, espero tempo de resposta máximo e resultado certo. Acho que você reconhece essa situação. É claro que desenvolvedores mais experientes devem educá-los, mas estou procurando as melhores práticas para evitar a situação quando uma consulta ruim e travada passa pela equipe de controle de qualidade e desativa o ambiente de produção.
Abordagens para a solução : podemos ter algumas abordagens, a primeira, revisar o código da próxima implantação. Não é muito conveniente, pode levar muito tempo, mas é muito eficaz. O segundo, tente identificar consultas lentas no ambiente de preparação olhando para slow_logs, essa abordagem é muito fácil, mas não muito eficiente, os dados de preparação não são os mesmos dados de produção, portanto, a consulta lenta na produção pode ser completamente boa consulta sobre encenação.
Qual é a sua opinião, como evitar consultas mal escritas e lentas para ir para o ambiente de produção?
pt-query-digest também pode ser útil para revisar consultas Ele pode revisar um log lento, salvando os resultados na tabela test.query_review em um servidor MySQL rodando no host1. Consulte --review para saber mais sobre como revisar consultas:
pt-query-digest --review h=host1,D=test,t=query_review /path/to/slow.log
Usando Mostrar perfis , você também pode revisar o desempenho da consulta
http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html
Quando EXPLAIN é usado com a palavra-chave EXTENDED, a saída inclui uma coluna filtrada que não é exibida de outra forma. Esta coluna indica a porcentagem estimada de linhas da tabela que serão filtradas pela condição da tabela. Além disso, a instrução produz informações extras que podem ser visualizadas emitindo uma instrução SHOW WARNINGS após a instrução EXPLAIN. O valor Message na saída SHOW WARNINGS exibe como o otimizador qualifica os nomes de tabelas e colunas na instrução SELECT, a aparência do SELECT após a aplicação das regras de regravação e otimização e possivelmente outras observações sobre o processo de otimização.