Sergio Palermo

Tecnologia, programação e experiência prática

Sobre o autor

Sou profissional de tecnologia com mais de 25 anos de experiência em desenvolvimento de software, bancos de dados e sistemas voltados para logística e gestão.

Neste espaço compartilho conhecimentos, experiências e aprendizados sobre programação, bancos de dados, desenvolvimento de sistemas e tecnologia em geral.

  • Série: Como usar IA para otimizar queries MySQL

    Uma query funcionar não significa que ela está bem otimizada.

    Quem trabalha diariamente com SQL provavelmente já passou por isso: uma consulta retorna exatamente o resultado esperado, mas começa a ficar lenta conforme a quantidade de dados cresce. O que funcionava muito bem com algumas milhares de linhas pode se transformar em um problema quando a tabela passa a ter milhões ou até bilhões de registros.

    É aí que entra a otimização de queries.

    Neste artigo, quero apresentar uma abordagem prática para utilizar IA como uma ferramenta de apoio na análise e otimização de consultas MySQL.

    A ideia não é tratar a IA como um oráculo que simplesmente recebe uma query e devolve uma versão “mais rápida”. Pense nela como um par de olhos extra durante o diagnóstico.

    A IA consegue analisar rapidamente planos de execução extensos, levantar hipóteses sobre índices, explicar conceitos técnicos e sugerir possíveis reescritas. Mas a decisão sobre o que realmente deve ser aplicado fica com você, baseada em evidências reais: EXPLAIN, EXPLAIN ANALYZE e métricas medidas antes e depois da alteração.

    A experiência faz diferença

    Falo isso também por experiência própria. São cerca de 20 anos lidando diariamente com queries e bancos de dados.

    Uma query bem otimizada não beneficia apenas o banco. Ela pode melhorar a experiência do usuário, evitar reclamações e dar mais tranquilidade para quem mantém o sistema.

    E existe também uma questão de escala.

    Uma aplicação eficiente consegue fazer muito mais com os mesmos recursos. Em ambientes como o Amazon RDS, isso pode fazer uma diferença significativa, já que estamos falando de infraestrutura com custo diretamente relacionado aos recursos disponíveis.

    E existe uma satisfação particular em pegar aquela query aparentemente bizarra que leva 30 segundos para executar, descobrir que ela está fazendo muito mais trabalho do que deveria e transformá-la em uma consulta eficiente.

    Principalmente quando estamos falando de tabelas com milhões ou bilhões de registros.

    O fluxo de trabalho

    Ao longo desta série, vou utilizar praticamente sempre o mesmo processo:

    1. Identifique a query lenta

    A origem pode ser o slow query log, uma ferramenta de APM, como o Database Insights do RDS, ou simplesmente uma reclamação de um usuário dizendo que determinada tela está demorando demais.

    2. Colete o contexto

    Obtenha o SHOW CREATE TABLE de todas as tabelas envolvidas na consulta.

    Isso é importante porque a estrutura real do banco determina quais índices existem, quais são as chaves, os tipos das colunas e várias outras características que podem mudar completamente uma análise.

    3. Analise o plano de execução

    Execute EXPLAIN e, quando possível, EXPLAIN ANALYZE.

    O EXPLAIN mostra como o otimizador pretende executar a consulta. Já o EXPLAIN ANALYZE permite comparar esse planejamento com aquilo que realmente aconteceu durante a execução.

    4. Leve os dados para a IA

    Aqui está uma das partes mais interessantes.

    Em vez de simplesmente perguntar:

    “Otimize esta query.”

    Forneça o schema real + a query + o plano de execução e utilize um prompt estruturado.

    Peça para a IA levantar hipóteses, explicar os problemas encontrados e sugerir possíveis índices ou reescritas.

    A diferença é enorme.

    5. Teste antes de aplicar

    Uma sugestão da IA é apenas uma hipótese.

    Crie o índice ou faça a alteração em um ambiente controlado, execute novamente a consulta e compare os resultados.

    Só depois de validar o ganho e confirmar que o resultado da consulta continua correto é que a alteração deve ser considerada para produção.

    Por que não pedir simplesmente “otimize essa query” para a IA?

    Porque, sem contexto, a IA está essencialmente adivinhando.

    Sem o CREATE TABLE e sem o EXPLAIN, ela pode sugerir:

    • um índice que já existe;
    • um índice que não faz sentido para aquela consulta;
    • uma coluna que sequer existe;
    • uma reescrita que altera o resultado;
    • ou uma solução teoricamente interessante, mas que não resolve o gargalo real.

    O valor da análise aumenta muito quando fornecemos schema real + query real + plano de execução real.

    Nesse cenário, a IA deixa de ser apenas um gerador de sugestões e passa a funcionar como uma ferramenta de apoio ao diagnóstico.

    E ainda existe uma vantagem importante: você continua sendo responsável pela análise.

    A IA pode levantar uma excelente hipótese. Mas quem precisa provar que ela funciona é o EXPLAIN ANALYZE, junto com as métricas do ambiente.

    O que veremos nesta série

    Este artigo é apenas o começo.

    A ideia é transformar este conteúdo em uma série de textos sobre otimização de queries MySQL com apoio de IA, explorando desde a interpretação dos planos de execução até índices, JOINs, reescrita de consultas e antipadrões comuns.

    Os textos serão publicados um por semana, sempre avançando um pouco mais no processo.

    O objetivo não é apenas ensinar alguns truques de SQL, mas mostrar um método que possa ser aplicado no trabalho real: identificar o problema, coletar evidências, formular hipóteses, testar e medir.

    Se você trabalha diariamente com MySQL, espero que esta série ajude a transformar algumas daquelas queries que fazem o servidor suar em consultas muito mais eficientes. 😄

    E, mesmo para quem já trabalha há bastante tempo com bancos de dados, vale acompanhar a série inteira. Sempre existe alguma coisa nova para aprender, especialmente quando começamos a combinar experiência prática com ferramentas de IA.