Olá, Welton! Como vai?
Obrigada por interagir por aqui e por trazer essa questão para reflexão! :)
Vou deixar abaixo algumas práticas que podem te ajudar a melhorar o desempenho das suas consultas:
→ Ao criar índices, concentre-se nas colunas que são frequentemente usadas em cláusulas como WHERE
, JOIN
e ORDER BY
, pois isso pode acelerar a recuperação de dados. Se você costuma filtrar ou ordenar por múltiplas colunas, um índice composto pode ser útil. No entanto, evite criar índices em colunas que não são usadas com frequência, pois isso pode aumentar o tempo necessário para operações de escrita e atualização.
→ Verifique se as suas tabelas estão bem normalizadas, elas não devem conter dados redundantes ou inconsistentes. Em alguns casos, pode ser vantajoso desnormalizar, ou seja, duplicar alguns dados para melhorar a performance de leitura, embora isso possa tornar a manutenção mais complexa.
→ Quando estiver trabalhando com JOINs
, é recomendável usar JOINs
explícitos, como INNER JOIN
ou LEFT JOIN
, ao invés de unir tabelas usando WHERE
. Isso não só melhora a legibilidade do código, como também pode ajudar o otimizador de consultas a funcionar melhor.
→ O particionamento de dados é outra técnica útil, especialmente em tabelas grandes. O particionamento horizontal, ou sharding, divide a tabela em partes menores com base em critérios como datas ou regiões, melhorando o desempenho das operações de leitura e escrita. O particionamento vertical, por sua vez, separa colunas menos usadas em tabelas diferentes, o que pode reduzir o tempo de leitura ao diminuir a largura das linhas.
→ Utilize o comando EXPLAIN
para entender como o banco de dados está executando suas consultas e identificar possíveis gargalos. Subconsultas devem ser limitadas, e quando possível, substituídas por JOINs
ou CTEs
(Common Table Expressions). Além disso, evite usar SELECT *
; especifique apenas as colunas que você realmente precisa para reduzir a quantidade de dados transferidos.
→ Por fim, considere implementar caching para consultas que são executadas frequentemente e cujos resultados não mudam com frequência, economizando tempo e recursos.
Um exemplo simples para ilustrar a importância dos índices:
-- Sem índice
SELECT * FROM vendas WHERE cliente_id = 12345;
-- Criando um índice na coluna cliente_id
CREATE INDEX idx_cliente_id ON vendas(cliente_id);
-- Com o índice criado, a mesma consulta será mais rápida
SELECT * FROM vendas WHERE cliente_id = 12345;
Desejo sucesso! Continue firme nos estudos! ✨✨
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!