View, function e Procedure #2

Fala pessoal, continuando o tema de desenvolvimento de objetos no banco de dados, esse é o segundo post da série 'View, function e procedure'. Hoje vou tratar das functions.

Essa funcionalidade não é tão conhecida/utilizada como views e procedures mas é muito útil.

Existem dois tipos de functions: - Scalar: Retorna um valor de qualquer tipo de dado. Pode receber parâmetros, tratar as informações e retornar um valor único.

Casos de uso mais comuns --> Limpar máscara de dados



--> Concatenar valores





- Table: Retorna uma tabela como resultado de um select. Recebe parâmetros, trata as informações e termina com um select que será o resultado final.

Caso de uso mais comum --> Filtrar select em substituição a uma View que não pode receber parâmetros


Como se pode observar é uma funcionalidade que pode contribuir muito no desenvolvimento de querys, principalmente pelo fato de em certos casos ajudar com o desempenho (como a filtragem na table-function).

Alguns pontos a considerar:

1) Evite ao máximo o uso de variáveis dentro da function, isso a deixará mais rápida. 2) Utilize filtros de forma adequada, filtrar o select interno tornará o a execução mais rápida. 3) Evite usar functions em clausulas ON e WHERE, ela faz com que o plano de execução do SQL não utilize um índice. Nesse caso, o mais indicado seria converter o valor em um CTE por exemplo, e posteriormente fazer a comparação. 4) Esse recurso não permite a utilização de tabelas temporárias, clausula FOR XML e tratamento de erros.

Assim como as views, as functions tem um papel importante e podem contribuir muito no dia a dia. Avalie a necessidade e utilize esse recurso conforme a necessidade.

Até a próxima!

#CGQuery

67 visualizações0 comentário

Posts recentes

Ver tudo