2010-01-25 56 views
157

¿Cuáles son las ventajas y desventajas de utilizar los tipos de datos nvarchar(max) frente a 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.nvarchar (max) versus NText

Editar: Al parecer, la cuestión también se aplica a TEXT y IMAGE vs varchar(max) y varbinary(max), para los que buscan esos tipos de datos posteriores.

Respuesta

170

Las ventajas son que se pueden utilizar funciones como LENLEFT y en nvarchar(max) y no se puede hacer eso contra ntext y text. También es más fácil trabajar con nvarchar(max) que con text donde tenía que usar WRITETEXT y UPDATETEXT.

Además, text, ntext, etc., están siendo obsoleta (http://msdn.microsoft.com/en-us/library/ms187993.aspx)

+9

[SQL Server 2016] (https://msdn.microsoft.com/en-us/library/ms187993.aspx) aparentemente todavía los admitirá. – Confluence

+1

@Confluence Históricamente, ¿texto y nText son de tipo de datos más antiguos que varchar y nvarchar en lo que se refiere a su existencia en SQL Server? – RBT

36

VARCHAR(MAX) es lo suficientemente grande como para acomodar TEXT campo. TEXT, NTEXT y IMAGE tipos de datos de SQL Server 2000 estarán en desuso en la versión futura de SQL Server, SQL Server 2005 proporciona compatibilidad con versiones anteriores a tipos de datos pero se recomienda utilizar nuevos tipos de datos que son VARCHAR(MAX), NVARCHAR(MAX) y VARBINARY(MAX).

10

nvarchar(max) es lo que desea utilizar. 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.

+0

Lo que no entiendo es que dicen que vaya con 'nvarchar (max)' pero eso me limita a 4000 caracteres. ¿Qué pasa si quiero que un campo contenga más que eso? – VoidKing

+1

nvarchar (max) no le limita a 4000 caracteres. Tienes una cantidad ilimitada de personajes. Además, el texto y el ntext han sido desaprobados por SQL Server. Esto significa que en una versión futura, ya no serán compatibles. –

+0

OIC, estoy usando SQL Server CE, que SÍ limita mi 'nvarchar (max)' a 4000 caracteres. Entonces, para SQL Server Compact, no tengo más remedio que usar 'ntext' en algunos casos. Cuando lo suspendan, supongo que tendré que actualizar algunos sitios. – VoidKing

4

La mayor desventaja de Text (junto con NText y Image) es que se eliminará en una versión futura de SQL Server, como por the documentation. Eso efectivamente hará que su esquema sea más difícil de actualizar cuando se lanzará esa versión de SQL Server.

27

ntext siempre habrá almacenar sus datos en una página de base de datos independiente, mientras que nvarchar(max) tratará de almacenar los datos en el propio registro de la base.

Así que 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.

Go nvarchar(max).

1

Quiero agregar que puede usar la cláusula .WRITE para actualizaciones parciales o completas y que el alto rendimiento se agrega a los tipos de datos varchar(max)/nvarchar(max).

Here puede encontrar un ejemplo completo del uso de la cláusula .WRITE.

Cuestiones relacionadas