- Utilize recuo/endentação adequada, pois terá melhor legibilidade melhorando seu entendimento futuro e de outras pessoas
- Escreva os comentários apropriados entre as lógicas para que assim, os outros possam entender rapidamente.
- Escreva todas as palavras-chave do SQL Server em CAPS. Por exemplo SELECT, FROM e CREATE.
- Procure nomear suas procedures com um nome intuitivo ao processo que ela executa
- Declare todas as variáveis no início da procedure
- Verifique o uso de variáveis desnecessárias, pois elas ocupam espaço na memória, tente reutiliza-las dentro do código
- Não utilizar as iniciais SP_XXX em suas procedures. Utilize como inicial Pr_XXX pois ficará mais fácil identificar suas procedures entre as nativas do Sql Server. Inclusive na própria documentação do Sql Server já diz - “Recomendamos fortemente que você não use o prefixo sp_ no nome de procedimento. Este prefixo é usado pelo SQL Server para designar procedimentos armazenados de sistema. “
- Defina o SET NOCOUNT ON no início do procedimento armazenado para evitar a mensagem desnecessária, como número de linhas afetadas pelo SQL Server.
- Tente fazer uso de tabelas temporárias com moderação, pois elas ocupam espaço no TempDB, além disso procedimento armazenados geralmente utilizam plano de execução em Cache, com o uso de tabelas temporárias é forçada uma nova compilação.
- Nunca traga todas as colunas de uma consulta (SELECT *) a não ser que for realmente necessário, use apenas colunas específicas que serão utilizadas no resultado.
- Tente evitar o cursor no procedimento armazenado, ele consome mais memória. Tente utilizar a variável de tabela e while loop para iterar o conjunto de resultados da consulta.
- Nos parâmetros de entrada da procedure, defina os types com os mesmos tamanhos e tipos das tabelas. Por exemplo, Nome Char(10) na tabela, mas você declara Nome Char(25) na procedure.
- Use a instrução catch Try corretamente no procedimento armazenado para lidar com os erros em tempo de execução.
- Se o retorno da procedure for uma única coluna/linha, prefira utilizar parâmetros de saída na procedure.
- Evite utilização de sub-queries ao invés disso utilize inner join
- Em condições de verificação de existência (exists) utilize Select top 1
- Em consultas (SELECT * FROM TbProduto where id = @id) para que seu plano de execução seja reaproveitado deve ser utilizado conforme exemplo anterior, mas você estiver usando uma consulta SQL como “SELECT * FROM Tbproduto where id = "+ @ eid, dessa forma não será reutizado o plano
- Use o ORDER BY e DISTINCT, TOP somente quando for necessário.
- Verifique a necessidade de índices entre colunas de tabelas grandes que realizam joins ou filtros por essas colunas
- Verifique se as colunas que compõem os joins utilizam datatypes diferentes, um deles será convertido para o outro. O datatype convertido é o hierarquicamente inferior. O otimizador não consegue escolher um índice na coluna que é convertida.
[]s
Nenhum comentário:
Postar um comentário