Dicas

Dicas de como a função UPPER() no SQL Server pode degradar a performance

Saiba como a função UPPER() no SQL Server pode degradar a performance das suas consultas

Olá pessoal, neste post eu gostaria de compartilhar algumas dicas e cuidados de como a função UPPER() no SQL Server pode degradar a performance.

Sabemos que a função UPPER() é bastante utilizada por nossos colegas programadores e dba’s SQL Server. É uma ótima função, porém ela pode ser utilizada em casos de necessidade ou nos locais corretos.

O que a consulta UPPER() no SQL Server faz?

Segundo a documentação do SQL Server, essa função retorna caracteres em MAIÚSCULO.

Isso é ótimo pois conhecemos alguns sistemas que ao consultar um cadastro nosso no banco de dados, normalmente aquele cadastro está em letras maiúsculas.

Agora, qual seria o problema em utilizar a função UPPER? Quais lugares não são menos recomendáveis?

Funções de modo geral no SQL Server existem, são uteis, mas em termos de performance, não ajudam bastante. Ao executar uma consulta no banco de dados o SQL Server fará leituras das páginas que você precisa.

Se o dado que está armazenado no SQL Server precisa ser “alterado” para que fique legível, aí meu caro amigo, mora o problema. Funciona mais ou menos assim:

Digamos que eu diga para você pegar buscar para mim papéis que estão em uma caixa, até aí tudo bem para você, isso é fácil é só pegar e me entregar, mas eu quero que você pegue todos os papéis um por um dobre-os no meio antes de me entregar, pois eu gosto deles dobrados.

O que eu fiz? Eu dei um trabalho para você certo? Agora imagina se essa caixa é bem grande e tem muitos papéis. Vai demorar mais tempo para você me trazer tudo isso dobrado do jeito que eu quero.

Funções no SQL Server geram mais custos para o banco de dados e não ajudam muito a estimar quantidade de dados a serem processados, vejamos a seguir um exemplo usando a função UPPER().

Eu tenho aqui a base de dados AdventureWorks2017 no SQL Server 2017, com a collation SQL_Latin1_General_CP1_CI_AS, vou explicar melhor sobre isso depois.

Vamos executar a consulta a seguir e analisar o plano de execução.

SELECT  
AddressID 
,AddressLine1 
,AddressLine2 
--,UPPER (City) AS CITY 
, City 
,StateProvinceID 
,PostalCode 
,SpatialLocation 
,rowguid 
,ModifiedDate 
 FROM Person.Address 
WHERE City = UPPER('Seattle') 

Como podemos ver, o SQL estimou que faria leituras de 34,111 linhas, quando que na verdade leu apenas 141 linhas.

Vamos entender o código, você precisa de todos os endereços das pessoas que moram na cidade de Seattle, mas por que você procurou o nome da cidade letras maiúsculas?

Vamos falar brevemente aqui sobre collation, atualmente estamos utilizando SQL_Latin1_General_CP1_CI_AS significa que alí aonde está escrito CI é case insensitive, então ‘GYZ’ deverá ser igual a ‘gyz’.

Logo, não há necessidade de colocar a função UPPER() do SQL Server pois os registros que retornarão serão os mesmos.

Ao retirar a função você terá a mesma informação com o SQL estimando a quantidade de linhas corretamente.

 

Se a collation do seu banco de dados é case sentitive, converse com a equipe de desenvolvimento para vocês procurarem melhores alternativas a fim de eliminar as funções das suas querys.

Faça testes, mostre os ganhos de performance e proponha mudanças para melhorar essas consultas.

Fica então essa dica de como a função UPPER() no SQL Server pode degradar a performance

Quaisquer dúvidas, deixe seu comentário abaixo. Um grande abraço a todos!

Você está com problemas de performance no seu banco de dados? Entre em contato para solicitar um DBA SQL Server Remoto para sua empresa.

Dicas de como a função UPPER() no SQL Server pode degradar a performance
The following two tabs change content below.

Wesley Mota

Wesley Mota

Share
Published by
Wesley Mota

Recent Posts

Best Free Spins No Deposit

Casinos online offer free spins to draw new customers. These bonuses are usually very profitable,…

5 dias ago

Ideal Online Port Gambling Enterprises: An Overview to Locating the Perfect Pc Gaming Experience

In recent times, online casino sites have actually obtained enormous appeal among gamers, providing a…

5 dias ago

Best Online Casinos That Accept Bitcoin Down Payments

Bitcoin, the most preferred cryptocurrency worldwide, has reinvented lots of industries, including the on baixar…

5 dias ago

The Ultimate Guide to Online Slot Reviews

Online slots have turned into one of one of the most preferred forms of home…

5 dias ago

Online Slot Reviews: What is it important? Online reviews of slot machines are very important.…

5 dias ago

Discover the Enjoyment of Free Port Gamings Offline

Port video games have actually long been a popular type of entertainment, providing exhilarating gameplay…

3 semanas ago