Query Lenta? Um Índice Pode Reduzir 45 Segundos Para 0.8 Segundos Sua query leva 45 segundos. Você já otimizou a lógica, já testou diferentes approaches, e nada funciona. Aí você descobre: faltava um índice. Depois: 0.8 segundos. Isso é SQL sênior. Não é escrever queries complexas. É saber onde o banco de dados está sofrendo e corrigir. O Problema: SQL Sem Índices é Brute Force Quando você roda uma query sem índices adequados, o banco de dados faz algo chamado table scan: percorre TODA a tabela linha por linha, verificando cada uma. Com 10 milhões de linhas, isso é devastador. Exemplo real: Sem índices: o banco precisa verificar cada uma das 10M linhas. Com índices corretos: pula direto para as linhas que atendem a e . A diferença? 45 segundos para 0.8. O Diagnóstico: EXPLAIN ANALYZE é Seu Melhor Amigo Antes de criar qualquer índice, descubra EXATAMENTE onde o banco está sofrendo: O resultado vai mostrar algo como: = table scan = o problema. Se visse , seria um bom sinal. Mas provavelmente você vê ou — sinais de que índices estão faltando. A Solução: O Índice Composto Correto Aqui está onde a maioria dos analistas erra: criam índices no lugar errado. Errado: Dois índices separados. O banco ainda precisa combinar os resultados. Lento. Correto: Um índice composto que segue a ordem do filtro e do ORDER BY. Por quê funciona melhor? 1. Colunas da cláusula WHERE primeiro: aparece na query, vai no índice 2. Coluna do ORDER BY depois: aparece no ORDER BY, vai logo depois 3. Predicado WHERE opcional: O reduz ainda mais O banco agora: Encontra as linhas com instantaneamente (graças ao índice) Já estão ordenadas por (graças à ordem do índice) Retorna em milissegundos O Checklist para Criar Índices Corretos 1. Identifique o Gargalo com EXPLAIN ANALYZE Não adivinhe. Use e veja exatamente onde está o problema. 2. Encontre as Colunas da Cláusula WHERE Essas vão PRIMEIRO no índice composto: 3. Adicione a Coluna do ORDER BY Depois das colunas de filtro: 4. Teste com EXPLAIN ANALYZE Novamente Agora deveria mostrar em vez de . Tempo de execução: 0.8 segundos em vez de 45. Os Tipos de Índice e Quando Usar Nem sempre é um índice composto. Às vezes, a solução é diferente: 1. B-Tree Index (padrão) Funciona bem para a maioria dos casos. Ordem importa. 2. Partial Index (quando seu filtro é sempre o mesmo) Se você sempre filtra por , crie um índice apenas para esses registros: Reduz o tamanho do índice e melhora a velocidade. 3. Covering Index (quando a query não precisa buscar na tabela) Se sua query só precisa de e você cria um índice com essas colunas, o banco nunca precisa tocar na tabela: O banco retorna direto do índice. Ainda mais rápido. O Custo: Índices Têm Um Preço Índices fazem queries mais rápidas. Mas cada INSERT, UPDATE ou DELETE precisa atualizar os índices também. Balança: Muitas reads, poucas writes: crie mais índices Muitas writes, poucas reads: crie apenas os índices essenciais Misturado: crie índices apenas para as queries que realmente doem Use para priorizar. Se uma query leva 45 segundos, merece um índice. Se leva 0.5 segundos, talvez não. SQL Sênior Não é Complexidade. É Eficiência. A query mais simples do mundo que leva 45 segundos precisa ser otimizada. A query mais complexa do mundo que leva 0.1 segundos está perfeita. Sênior é saber a diferença, diagnosticar com EXPLAIN ANALYZE, e aplicar o índice certo. Domine SQL de verdade: Aprenda otimização de queries, índices avançados, e performance real com projetos corporativos. No Elite Data Academy — SQL sênior em prática.