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!
Comments