sql-server - datatype - text length sql
¿Cuáles son las ventajas y desventajas de usar los tipos de datos nvarchar(max)
vs. NText
en SQL Server? No necesito compatibilidad con versiones anteriores, por lo que está bien que nvarchar(max)
no sea compatible con versiones anteriores de SQL Server.
Editar: aparentemente la pregunta también se aplica a TEXT
e IMAGE
vs. varchar(max)
y varbinary(max)
, para aquellos que buscan esos tipos de datos más adelante.
La mayor desventaja de Text
(junto con NText
e Image
) es que se eliminará en una versión futura de SQL Server, como en http://msdn.microsoft.com/en-us/library/ms187993.aspx . Eso efectivamente hará que su esquema sea más difícil de actualizar cuando se lanzará esa versión de SQL Server.
Las ventajas son que puede usar funciones como LEN
e LEFT
en nvarchar(max)
y no puede hacer eso contra ntext
y text
. También es más fácil trabajar con nvarchar(max)
que con text
donde debe usar WRITETEXT
y UPDATETEXT
.
Además, text
, ntext
, etc. están en desuso ( http://msdn.microsoft.com/en-us/library/ms187993.aspx )
VARCHAR(MAX)
es lo suficientemente grande como para acomodar el campo TEXT
. TEXT
tipos de datos TEXT
, NTEXT
e IMAGE
de SQL Server 2000 quedarán obsoletos en la versión futura de SQL Server, SQL Server 2005 ofrece compatibilidad con versiones anteriores para tipos de datos, pero se recomienda utilizar nuevos tipos de datos que sean VARCHAR(MAX)
, NVARCHAR(MAX)
y VARBINARY(MAX)
.
ntext
siempre almacenará sus datos en una página de base de datos separada, mientras que nvarchar(max)
intentará almacenar los datos dentro del registro de la base de datos.
Entonces nvarchar(max)
es algo más rápido (si tiene texto que es más pequeño que 8 kB). También noté que el tamaño de la base de datos crecerá un poco más lento, esto también es bueno.
Ir nvarchar(max)
.
nvarchar(max)
es lo que quiere usar. La mayor ventaja es que puede usar todas las funciones de cadena T-SQL en este tipo de datos. Esto no es posible con ntext
. No estoy al tanto de ninguna desventaja real.