Developing

Introduction

Eu sempre me perguntei qual seria a diferença entre varchar(max), nvarchar(max) e varchar(n) ou nvarchar(n) (varchar com tamanho definido por exemplo(varchar(255)). Por isso decidi dar uma pesquisada e compartilhar o que eu descobri.

varchar(max) VS varchar(n)

Existem algumas diferenças entre VARCHAR (1-8000) e VARCHAR (MAX).

Por exemplo, quando você armazena em uma coluna VARCHAR (N), os valores são fisicamente armazenados da mesma forma. Mas quando você armazena em uma coluna VARCHAR (MAX), atrás da tela os dados são tratados como um valor de texto. Portanto, existe um processamento adicional necessário quando se lida com um valor VARCHAR (MAX), apenas se o tamanho exceder 8000 caracteres.

VARCHAR (MAX) ou nvarchar (MAX) são considerados como um “tipo de valor grande”. Tipos de valores grandes são normalmente armazenados ‘out of row'(fora de linha). Isto significa que a linha de dados terá um ponteiro para outro local onde o ‘valor grande’ está armazenado. Por padrão o SQL Server tenta acomodar o valor ’em linha’ (in row), mas se não conseguir, ele vai armazenar os valores grandes ‘out of row’. Quando os valores são armazenados ‘out of row’, haverá ligeira sobrecarga de processamento na leitura da informação. Aqui está uma boa referência: http://msdn2.microsoft.com/en-us/library/ms189087.aspx

Não é ruim usar os tipos VARCHAR (MAX). Se você estiver armazenando valores “pequenos” de dados em uma coluna VARCHAR (MAX), ele será tratado normalmente. Sendo assim, se não for necessário indexar a coluna, então você pode utilizar a opção VARCHAR (MAX) tranquilamente.

A maioria dos profissionais, especialmente os que trabalham com banco de dados ou nomenclatura de dados, não aconselham a utilização deste tipo (VARCHAR(MAX)) sem ser realmente necessário. Um exemplo simples é que possuir uma coluna VARCHAR (MAX) pode confundir alguém que olha para os dados mais tarde. Por exemplo, se você deseja armazenar um comentário de 100 caracteres ou de endereço de 80 caracteres, por que você utilizaria um VARCHAR (MAX)? Se você usar Endereço VARCHAR (MAX), comentários VARCHAR (MAX), nome VARCHAR (MAX), alguém ou até mesmo você futuramente pode ter dificuldade para identificar o que deve realmente ser armazenado. Em um bloqueio/limitação do tamanho (qauntidade de caracteres a ser informada) deverá ser feita via software, o que poderá resultar em mais tempo de análise de impacto e etc.

References

Forum MSDN – varchar(max) vs varchar(255)

Also View

SQL Server – nvarchar(max) Limit

SQL Server – Variáveis Table

SQL Server  – TimeStamp

SQL Server – Remover Acentos

SQL Server – Open Transactions Details

SQL Server – DATEDIFF

Top Searches – Mais Buscados

_____

Não se esqueça de deixar seu comentário, critica, elogio, dúvida e etc. Ele é muito importante para a melhoria do blog.
Do not forget to leave your comments, criticism, praise, questions, etc.. It is very important for improving the blog.

Leave a comment