TEXT
y VarChar(MAX)
son tipos de datos de caracteres de longitud variable grande no Unicode, que pueden almacenar un máximo de 2147483647 caracteres no Unicode (es decir, la capacidad máxima de almacenamiento es: 2 GB).
Según el enlace de MSDN, Microsoft sugiere evitar el uso del tipo de datos Texto y se eliminará en futuras versiones de SQL Server. Varchar (Max) es el tipo de datos sugerido para almacenar los valores de cadena grandes en lugar del tipo de datos Text.
- Almacenamiento en fila o fuera de fila
Los datos de una Text
columna de tipo se almacenan fuera de la fila en páginas de datos de LOB separadas. La fila en la página de datos de la tabla solo tendrá un puntero de 16 bytes a la página de datos de LOB donde están presentes los datos reales. Mientras que los datos de una Varchar(max)
columna de tipo se almacenan en fila si es menor o igual a 8000 bytes. Si el valor de la columna Varchar (máx.) Cruza los 8000 bytes, el valor de la columna Varchar (máx.) Se almacena en páginas de datos LOB separadas y la fila solo tendrá un puntero de 16 bytes a la página de datos LOB donde están presentes los datos reales. Entonces, In-Row
Varchar (Max) es bueno para búsquedas y recuperación.
- Funcionalidades compatibles / no compatibles
Algunas de las funciones de cadena, operadores o construcciones que no funcionan en la columna Tipo de texto, pero sí funcionan en la columna de tipo VarChar (Max).
=
Igual al operador en la columna de tipo VarChar (Max)
Agrupar por cláusula en la columna de tipo VarChar (Max)
- Consideraciones de E / S del sistema
Como sabemos, los valores de la columna de tipo VarChar (Max) se almacenan fuera de la fila solo si la longitud del valor que se almacenará es mayor que 8000 bytes o si no hay suficiente espacio en la fila, de lo contrario, se almacenará en fila. Entonces, si la mayoría de los valores almacenados en la columna VarChar (Max) son grandes y se almacenan fuera de la fila, el comportamiento de recuperación de datos será casi similar al de la columna Tipo de texto.
Pero si la mayoría de los valores almacenados en columnas de tipo VarChar (Max) son lo suficientemente pequeños como para almacenar en fila. Luego, la recuperación de los datos donde no se incluyen las columnas LOB requiere la mayor cantidad de páginas de datos para leer, ya que el valor de la columna LOB se almacena en fila en la misma página de datos donde se almacenan los valores de las columnas no LOB. Pero si la consulta de selección incluye la columna LOB, entonces requiere menos cantidad de páginas para leer para la recuperación de datos en comparación con las columnas de tipo Texto.
Conclusión
Utilice VarChar(MAX)
el tipo de datos en lugar de TEXT
un buen rendimiento.
Fuente