HOSPEDAGEM DE SITES DISCO VIRTUAL CONSTRUTOR BLOG
LOCAMAIL EXCHANGE E-MAIL MARKETING
BANDA LARGA
PC PROTEGIDO
FLASH COMMUNICATION MX WINDOWS STREAMING MEDIA PODCAST
PABX VIRTUAL PORTAL DE VOZ
HOSPEDAGEM
COMÉRCIO
ELETRÔNICO
REGISTRO
DE DOMÍNIO
REVENDA SERVIÇOS
DEDICADOS
SERVIÇOS
DE E-MAIL
SERVIÇOS
DE VOZ
SEGURANÇA
ÁUDIO E
VÍDEO
ACESSO

.: Função de Usuário no Banco de Dados SQL Server

Esta é uma “dica” sobre a utilização de User Function no SQL Server, pois, em alguns casos ela poderá trazer problemas de performance.

Utilizar User Function tem grandes vantagens técnicas como todos programadores já sabem, porém, ao utilizá-la na clausula where poderá trazer a famosa “lentidão”, caso sua consulta principal retornar muitos dados.

EXEMPLO:
–Criando uma User Function
Create Function fn_pesquisa_status
(
@status varchar(20)
)
Returns int
AS
Begin
declare @cod int
select @cod = cod_status from tab_status where tipo = @status
return @cod
End

–Utilizando User Function retornou 12.359 registros
–em 2:13 (dois minutos e treze segundos)
select nm_cliente
from tab_cliente
where status = dbo.fn_pesquisa_status(’ATIVO’)

–Utilizando SubSelect retornou 12.359 registros
–em 0:00 (0 segundos)
select nm_cliente
from tab_cliente
where status = (select cod_status from tab_status where tipo = ‘ATIVO’)

Explicação
Isso ocorre porque o SQL Server irá acionar a User Function de acordo com o número de registros que existir no seu select principal, ou seja, nesse caso, a User Function foi acionada 12.359 vezes, enquanto o SubSelect foi executado apenas uma única vez.

Darci Leandro - DBA LocaWeb

Um comentário para “.: Função de Usuário no Banco de Dados SQL Server”

  1. Leandro Ribeiro disse:

    Excelente observação Leandro xara! hehe

    Parabéns pelo blog, são muito bacanas as dicas e mostram o quanto são capacitados os profissionais dessa grande empresa.

    parabéns.

    att,
    Leandro Ribeiro

Deixar um comentário