TEXT
e VarChar(MAX)
são do tipo de dados de caracteres de tamanho variável grande não Unicode, que podem armazenar no máximo 2147483647 caracteres não Unicode (ou seja, a capacidade máxima de armazenamento é de 2 GB).
De acordo com o link do MSDN, a Microsoft sugere evitar o uso do tipo de dados Texto e ele será removido em versões futuras do Sql Server. Varchar (Máx.) É o tipo de dados sugerido para armazenar os valores de cadeia grande em vez do tipo de dados Texto.
- Armazenamento em linha ou fora de linha
Os dados de uma Text
coluna de tipo são armazenados fora da linha em páginas de dados LOB separadas. A linha na página de dados da tabela terá apenas um ponteiro de 16 bytes para a página de dados LOB em que os dados reais estão presentes. Enquanto a Varchar(max)
coluna Dados de um tipo é armazenada em linha, se for menor ou igual a 8000 bytes. Se o valor da coluna Varchar (max) estiver cruzando os 8000 bytes, o valor da coluna Varchar (max) será armazenado em páginas de dados LOB separadas e a linha terá apenas um ponteiro de 16 bytes para a página de dados LOB em que os dados reais estão presentes. Portanto, o In-Row
Varchar (Max) é bom para pesquisas e recuperação.
- Funcionalidades suportadas / não suportadas
Algumas das funções de string, operadores ou construções que não funcionam na coluna Tipo de texto, mas funcionam na coluna do tipo VarChar (Max).
=
Igual ao Operador na coluna do tipo VarChar (Max)
Agrupar por cláusula na coluna do tipo VarChar (Max)
- Considerações sobre System IO
Como sabemos que os valores da coluna do tipo VarChar (Max) são armazenados fora da linha somente se o comprimento do valor a ser armazenado for maior que 8000 bytes ou se não houver espaço suficiente na linha, caso contrário, ele armazenará em linha. Portanto, se a maioria dos valores armazenados na coluna VarChar (Max) forem grandes e armazenados fora da linha, o comportamento de recuperação de dados será quase semelhante ao da coluna Tipo de texto.
Mas se a maioria dos valores armazenados nas colunas do tipo VarChar (Max) forem pequenos o suficiente para armazenar em linha. A recuperação dos dados em que as colunas LOB não estão incluídas requer o maior número de páginas de dados a serem lidas, pois o valor da coluna LOB é armazenado em linha na mesma página de dados em que os valores das colunas não LOB são armazenados. Mas se a consulta de seleção incluir a coluna LOB, será necessário um número menor de páginas para ler para a recuperação de dados em comparação com as colunas do tipo Texto.
Conclusão
Use o VarChar(MAX)
tipo de dados e não TEXT
para obter um bom desempenho.
Fonte