Qual Data Type Utilizar: Char ou Varchar?

Oi galera, tudo jóia? Desculpem por ficar mais um tempo sem escrever algum artigo. Segue um artigo bem interessante e que muitos desenvolvedores SQL já me perguntaram sobre esse tema: Qual datatype utilizar em um campo string Char ou Varchar?

Esses dois datatypes se parecem, mas possuem diferenças no armazenamento e na extração dos dados. Vejam abaixo:

Varchar
Quando utiliza o datatype varchar para armazenar um campo string, se ganha em espaço no banco de dados ao armazenar um dado, pois ele trunca o campo no tamanho total de caracteres inseridos, exemplo:

create table DescricaoVarchar
(
Descricao   varchar(100)
)
go
insert into DescricaoVarchar values (‘InsercaoCampoVarchar’)

O dado ‘InsercaoCampoVarchar’ possui 20 caracteres, portando dos 100 caracteres atribuídos o dado será trucado e será armazenado somente 20 caracteres e não 100.

Mas perde performance na extração dos dados no momento da execução de um script T-SQL, pois a query terá que “varrer” o campo por inteiro para validar as informações que estão sendo extraídas.

Char
Já o datatype char é o contrário, ganha em performance e perdemos em armazenamento, veja exemplo abaixo:

create table DescricaoChar
(
Descricao   char(100)
)
go
insert into DescricaoChar values (‘InsercaoCampoChar’)

O dado ‘InsercaoCampoChar’ mesmo tendo um tamanho de 17 armazenará 100 caracteres:
‘InsercaoCampoChar                                                                                                                                              ‘

Ou seja, sempre armazenará o total dos dados, mas teremos ganhos em performance, pois o comando T-SQL sempre percorrerá 100 caracteres e não terá que contar caracter por caracter (como no datatype varchar) dentro de um campo para verificar as condições que estão sendo solicitadas.

Então, qual datatype utilizar?Dependerá exclusivamente o que será inserido dentro do campo e qual será a demanda de consultas utilizando esse campo. Lembrando que temos sempre que pensar em um banco, Normalizado e Performático.

Um grande abraço galera e até a próxima.

Atenciosamente,
Gabriel B Azevedo

Analista de Sistemas Pleno e SQL Developer Pleno
https://gabrielccomputacao.wordpress.com

5 comentários

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s