Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1082
Assunto : SQL Server
Titulo: Cuidado com conversões implicitas no SQL

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon





As conversões implicitas de dados no SQL Server, apesar de evitarem alguns crashs inesperados, são também um perigo para a performance do banco.

Desde que o SQL Server passou a suportar conversões implicitas, querys como abaixo passaram a ser válidas :

SELECT EmployeeID, NationalIDNumber, LoginID
FROM HumanResources.Employee
WHERE NationalIDNumber = 112457891


O que tem errado nesta query ?

O campo NationalIdNumber é nvarchar(30) no banco, não numérico. Então ao executarmos essa query o que está ocorrendo é uma conversão implicita de dados.

O que em um primeiro momento poderia parecer benéfico, na verdade está longe disso. Se você observar o plano de execução da query irá ver que a query está fazendo um full scan no índice, apesar de existir um indice por NationalIDNumber.

O problema é que a conversão implicita equivale a ter uma função Convert do lado direito do sinal de '=' . Funções ao lado direito da igualdade impedem o uso do indice.


Solução : Basta acrescentar apóstrofos na query. Veja abaixo.

SELECT EmployeeID, NationalIDNumber, LoginID
FROM HumanResources.Employee
WHERE NationalIDNumber = '112457891'


Resumindo : A conversão implicita pode gerar um grande prejuizo para a performance das querys.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br