Otimização de Queries SQL — 5 Técnicas que Reduzem Tempo de Execução em 80% Query lenta não é apenas um incômodo. É dinheiro saindo da conta a cada segundo que o processamento roda. Especialmente em cloud (BigQuery, Snowflake, Redshift), onde você paga por dados processados, uma query mal otimizada pode custar centenas de reais por mês. E a parte mais frustrante? A maioria dos analistas não sabe por onde começar a otimizar. Neste post, você vai aprender as 5 técnicas que mais economizam tempo — e dinheiro — sem precisar reescrever a lógica da query. Técnica 1: Índices Compostos em WHERE e JOIN O erro clássico: criar índice em uma coluna isolada e esperar que resolva tudo. A verdade: o banco só usa o índice se as colunas estiverem na ordem correta. Se sua query tem: Você precisa de um índice composto nessa ordem: Por que funciona? O índice composto evita que o banco fazer um "table scan" (varrer toda a tabela). Ele vai direto para as linhas que você quer. Impacto real: Query de 45 segundos → 0.8 segundos. Economiza processamento de dados em 99%. A ordem importa: coluna de igualdade (WHERE) → coluna de range (>, <) → coluna de ORDER BY. Técnica 2: Nunca Use SELECT * — Selecione Apenas o que Vai Usar Parece óbvio, mas vejo isso o tempo inteiro. Na segunda query, você está processando e transmitindo apenas 3 colunas em vez de 15. Se cada usuário tem 1KB de dados extras, você economiza 100MB de processamento só nisso. Em BigQuery: você paga pelo volume de dados varridos. SELECT * em uma tabela de 50 colunas vai te cobrar por 50 colunas mesmo que precise só de 3. Em Snowflake: o custo fica óbvio rápido. A regra prática: se uma coluna não aparece no SELECT final ou em uma cláusula WHERE crítica, ela não entra na query. Técnica 3: Filtrar Cedo — WHERE Antes de JOIN Essa técnica economiza processamento drástico. Na segunda versão, você reduz a tabela de pedidos antes do JOIN. Menos linhas para cruzar = menos tempo. O princípio: filtrar reduz o volume. Quanto menor o volume, mais rápido o JOIN. Para queries muito grandes, você pode usar uma CTE (Common Table Expression) para deixar o código mais legível: O desempenho é o mesmo, mas o código fica mais fácil de entender e manter. Técnica 4: CTEs com MATERIALIZED Forçam Execução Única CTEs (WITH statements) são ótimas para clareza, mas podem ser executadas múltiplas vezes se você não for cuidadoso. A solução (em Postgres, BigQuery): Com , o banco executa a CTE uma vez e reutiliza o resultado. Isso economiza muito quando a CTE é complexa e usada múltiplas vezes. Técnica 5: EXPLAIN ANALYZE — Diagnóstico Antes de Otimizar A maioria dos analistas tenta "chutar" onde está o problema. Errado. O EXPLAIN ANALYZE te mostra: Qual operação consome mais tempo (Seq Scan, Index Scan, Hash Join, etc.) Quanto tempo cada parte leva (em milissegundos) Quantas linhas o banco estima vs. quantas foram realmente lidas Se a estimativa é muito diferente da realidade, é sinal que os índices estão desatualizados. Sem EXPLAIN ANALYZE, você está otimizando no escuro. Com ele, você otimiza onde realmente importa. O Fluxo de Otimização Que Funciona 1. Rode EXPLAIN ANALYZE na query lenta 2. Identifique o gargalo (geralmente um Seq Scan em uma tabela grande) 3. Crie um índice composto se ainda não tiver 4. Rode EXPLAIN ANALYZE novamente para medir o ganho 5. Se ainda estiver lento, revise a lógica ou o filtro de dados Não existe otimização sem diagnóstico primeiro. EXPLAIN ANALYZE é o ponto de partida obrigatório. Resumo: As Técnicas Que Pagam o Salário | Técnica | Ganho Típico | Esforço | |---------|-----------|---------| | Índices compostos | 50-80% mais rápido | Baixo | | Remover SELECT * | 30-50% menos dados | Muito baixo | | Filtrar antes de JOIN | 40-70% menos linhas | Baixo | | MATERIALIZED CTE | 30-60% em CTEs repetidas | Muito baixo | | EXPLAIN ANALYZE | Identifica gargalo real | Muito baixo | Dessas 5, a que mais economiza é sempre índice composto combinado com EXPLAIN ANALYZE. Porque você só otimiza o que realmente está lento. O resto é bônus. Aprofunde seus conhecimentos em SQL Avançado através da Elite Data Academy — nossa plataforma oferece módulos completos sobre performance, índices e otimização com projetos do mercado real.