Avançar para o conteúdo

Melhores Práticas para Código SQL

Determinar melhores práticas para código SQL ajuda na legibilidade do código, compreensão da lógica, manutenção, análises de causa raiz de erros e, até mesmo, na performance dos processos.

A padronização de processos também é fundamental para que novos colaboradores apreendam rapidamente o conteúdo dos códigos e para o compartilhamento de conhecimento entre diferentes áreas.

Cada ferramenta possui suas particularidades, mas você pode seguir as sugestões abaixo para criar um guia de melhores práticas para o seu projeto.

Melhores Práticas de SQL – Scripting

Ordem das cláusulas

O script deve seguir a seguinte ordem de cláusulas, visando clareza da informação e performance:

  1. FROM: origem dos dados e joins
  2. WHERE: condições por linha
  3. GROUP BY: para realizar o cálculo de grupos e organizar de acordo com os valores existentes
  4. HAVING: condições por grupo
  5. ORDER BY: ordernação dos dados

Capitalização

Defina se as palavras chaves e funções devem ser capitalizadas ou não. Essa é uma das melhores práticas para SQL para manter a consistência entre ambientes, facilitar a escrita do código e aumentar a legibilidade.

Algumas ferramentas, como o dbt, tem como premissa que todo o código deve ser escrito em letras minúsculas.

Chave Primária

Nem sempre temos uma coluna com valores únicos para servir como chave primária. É interessante avaliar se a tabela contempla um conjunto de campos que possa ter essa função e garantir que essa informação faz sentido como chave primária.

Documente essa informação, uma vez que pode ser útil para avaliar a qualidade dos dados, definir testes de qualidade e para realizar a análise de causa raiz.




Comentários

Documente o código incluindo informações técnicas, de negócios, justificativas e outras informações importantes, especialmente para realizar a manutenção adequada do código. Essa é uma das melhores práticas para SQL

Convenção de nomenclaturas

Defina e documente convenções para nome de tabelas, schemas, colunas e outros items.

Por exemplo:

  • Todos os campos de identificador começarão por “id_”
  • Todos os campos de texto terminarão por “_text”
  • Todas as tabelas auxiliares serão chamadas “aux__nome_da_tabela_final”

Configurações próprias da ferramenta

Cada vez mais as ferramentas de transformações de dados que permitem código incluem funções particulares da própria ferramenta, aumentando a performance e velocidade de processamento.

Nesses casos é de extrema importância aproveitar as configurações ideais para cada objetivo. Por exemplo, o dbt possui as funções ref() e source() para referenciar a origem dos dados e várias opções para carregamentos incrementais e materializações de tabelas.

Melhores Práticas de SQL – Legibilidade

Sinais e delimitação de texto

Para facilitar a legibilidade, uma das melhores práticas para SQL, é deixar um espaço entre sinais como: +, -, =

Também é interessante definir se os valores em formato de texto serão delimitados por aspas simples ou duplas, visando a padronização do código.




Uso de alias em tabelas

É comum utilizar mais de uma tabela para criar um código SQL. Nesses casos, e quando os nomes da tabelas acabam por ser grandes e complexos, deve-se utilizar aliases para simplificar a escrita do código.

Uso de CTEs

Leia mais sobre CTEs aqui.

Uso de indentação

Defina a melhor maneira para aplicar indentação no seu código. O uso dessa técnica é muito interessante quando há etapas complexas de transformação. É uma mais valia utilizar a indentação quando existem muitas condições e cláusulas a serem descritas.

Sintaxes explícitas

Prefira deixar claro qual o comando a ser utilizado e evite “atalhos”.

Use mais linhas se for preciso

Não há mal em fazer quebras de linhas no meio do código. Isso pode facilitar a legibilidade, por exemplo, quando tempos cláusulas de WHERE e CASE WHEN mais complexas.

Melhores Práticas de SQL – Performance

Para mais dicas de performance em banco de dados, clique aqui.

Evitar SELECT *

Uma das melhores práticas para SQL em termos de performance é definir exatamente quais campos devem ser buscados. Sendo assim, deve-se evitar o uso de SELECT * para que apenas as colunas de interesse sejam processadas.




Filtrar dados o quanto antes

Pela mesma lógica do ponto acima, filtre os dados o quanto antes, para que apenas a informação necessária seja processada. Isso reduz a necessidade de recursos computacionais e agiliza as transformações, uma vez que apenas as linhas que realmente importam serão avaliadas.

Uso de CTEs

Leia mais sobre CTEs aqui.

Avaliar o uso de INNER JOIN x WHERE clause

Em muitos casos, com apoio de CTEs, a filtragem de dados pode ser feita com inner joins ao invés de where clauses.

Utilizar inner joins permite que a relação entre tabelas seja mais clara, explícita e precisa, uma vez que a filtragem de linhas é baseada em campos que relacionam as tabelas. Além disso, a manutenção e alteração do código fica mais simples de ser realizada.

O uso de inner joins também é interessante quanto à integridade de dados. Where clauses podem lidar de forma imprecisa com valores nulos.

Preferir igualdades a LIKE

Uma melhor prática para SQL é utilizar igualdades nas condições por ser mais eficiente.

LIKE deve ser apenas usado para correspondência de padrões quando realmente necessário.

Avaliar o uso de IN x EXISTS

EXISTS/NOT EXISTS são mais eficientes para filtrar com referência a outra tabela porque uma vez que uma correspondência é encontrada, a busca é concluída. Isso é ideal para conjuntos de dados grandes ou com relações entre tabelas complexas. Essa função também não é afetados por valores nulos e são ideais para relações many-to-many.

IN/NOT IN são melhores para listas simples de valores estáticos. É uma função de compreensão mais simples, no entanto,pode ser menos eficiente e gerar problemas com listas maiores ou valores nulos.




Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *