Não há basicamente nenhuma diferença entre VARCHAR(2048)
e VARCHAR(MAX)
. Um está sujeito a transbordar para a unidade de alocação de "estouro de linha", o outro está sujeito a estouro na unidade de alocação de BLOB, consulte Organização de tabelas e índices . A configuração padrão da opção large value types out of row
table é 0, a menos que tenha sido alterada, o VARCHAR(MAX)
permanecerá na linha, se possível, assim como VARCHAR(2048)
.
Eu recomendaria executar sys.dm_db_index_physical_stats
e obter as linhas max, min e avg reais tamanho, bem como avg_page_space_used_in_percent
. Isso fornecerá uma imagem mais precisa do (s) tamanho (s) verdadeiro (s) da linha, em vez do tamanho teórico declarado.