Se você já se perguntou “Por que meu MySQL está tão lento?” ou “Como posso melhorar o desempenho de uma consulta SQL?”, então você está no lugar certo.

Vou te mostrar exatamente como otimizar consultas no MySQL e garantir que seu banco de dados rode como uma máquina bem ajustada.
1. Identifique as Consultas Lentas
Antes de otimizar, precisamos encontrar o problema. Ative o Slow Query Log no MySQL para identificar consultas que estão demorando mais do que deveriam:
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;
Depois, analise o arquivo de log e veja quais consultas precisam de ajustes.
2. Use o EXPLAIN Para Entender a Consulta
O comando EXPLAIN mostra como o MySQL executa suas consultas. Isso ajuda a identificar problemas como table scans desnecessários e falta de índices:
EXPLAIN SELECT * FROM pedidos WHERE status = 'pendente';
Se o MySQL estiver lendo todas as linhas da tabela (Full Table Scan), precisamos de melhorias!
3. Índices: Seus Melhores Amigos
Se seu MySQL está travando ao processar consultas, verifique se está usando índices corretamente. Eles aceleram buscas, filtros e ordenações:
CREATE INDEX idx_status ON pedidos(status);
Sempre analise se o índice certo está sendo usado:
SHOW INDEX FROM pedidos;
4. Evite SELECT * (Pegue Apenas o Necessário)
Pegar todas as colunas da tabela pode ser tentador, mas é uma péssima prática para performance:
SELECT id, nome FROM usuarios WHERE ativo = 1; -- Melhor do que SELECT *
5. Normalize ou Desnormalize? Eis a Questão!
Uma estrutura de dados bem projetada melhora muito a performance. Às vezes, normalizar (evitar dados redundantes) ajuda. Outras vezes, desnormalizar (repetir dados estratégicos) pode acelerar consultas frequentes.
6. Use OPTIMIZE TABLE Regularmente
Se suas tabelas sofrem muitas inserções e remoções, fragmentação pode estar afetando o desempenho. O comando OPTIMIZE TABLE resolve isso:
OPTIMIZE TABLE pedidos;
7. Cuide do Pool de Conexões
Se muitas conexões simultâneas estão deixando seu MySQL lento, ajuste o max_connections:
SET GLOBAL max_connections = 200;
Ferramentas como ProxySQL podem ajudar a gerenciar melhor as conexões.
8. Query Cache Ainda é Válido?
Se você usa MySQL < 8.0, Query Cache pode melhorar a performance. Mas, no MySQL 8+, use Redis ou memcached para armazenar resultados e aliviar a carga do banco.
FAQ: Perguntas Frequentes
1. Como posso melhorar o desempenho do MySQL?
Otimize índices, evite SELECT *, use EXPLAIN para entender consultas e mantenha suas tabelas limpas com OPTIMIZE TABLE.
2. Como saber se uma consulta está lenta?
Ative o Slow Query Log e analise com EXPLAIN.
3. O que mais pode travar o MySQL?
Falta de índices, consultas mal escritas, fragmentação de tabelas, muitas conexões simultâneas ou falta de otimização do hardware.