2010-01-25 16 views
157

Quali sono i vantaggi e gli svantaggi dell'utilizzo dei tipi di dati nvarchar(max) rispetto a NText in SQL Server? Non ho bisogno di compatibilità con le versioni precedenti, quindi è corretto che lo standard nvarchar(max) non sia supportato nelle versioni precedenti di SQL Server.nvarchar (max) vs NText

Edit: A quanto pare la domanda vale anche per TEXT e IMAGE vs. varchar(max) e varbinary(max), per coloro che cercano per quei tipi di dati successivi.

risposta

170

I vantaggi sono che è possibile utilizzare funzioni come LEN e LEFT su nvarchar(max) e non si può fare contro ntext e text. È inoltre più facile lavorare con nvarchar(max) rispetto a text in cui è stato necessario utilizzare WRITETEXT e UPDATETEXT.

Inoltre, text, ntext, ecc, vengono deprecato (http://msdn.microsoft.com/en-us/library/ms187993.aspx)

+9

[SQL Server 2016] (https://msdn.microsoft.com/en-us/library/ms187993.aspx) a quanto pare continuerà a supportarli. – Confluence

+1

@Confluence Storicamente, il testo e il tipo di dati precedente di nText sono varchar e nvarchar per quanto riguarda la loro esistenza in SQL Server? – RBT

36

VARCHAR(MAX) è abbastanza grande da contenere il campo TEXT. TEXT, NTEXT e IMAGE i tipi di dati di SQL Server 2000 saranno deprecati nella versione futura di SQL Server, SQL Server 2005 offre la compatibilità con le versioni precedenti ma si consiglia di utilizzare nuovi tipi di dati che sono VARCHAR(MAX), NVARCHAR(MAX) e VARBINARY(MAX).

10

nvarchar(max) è ciò che si vuole utilizzare. Il più grande vantaggio è che è possibile utilizzare tutte le funzioni di stringa T-SQL su questo tipo di dati. Questo non è possibile con ntext. Non sono a conoscenza di alcun reale svantaggio.

+0

Quello che non capisco è che dicono di andare con 'nvarchar (max)' ma questo mi limita a 4000 caratteri. Cosa succede se voglio un campo per contenere più di quello? – VoidKing

+1

nvarchar (max) non limita a 4000 caratteri. Hai un numero illimitato di caratteri. Inoltre, text e ntext sono stati deprecati da SQL Server. Ciò significa che in una versione futura, non saranno più supportati. –

+0

OIC, sto usando SQL Server CE, che limita il mio 'nvarchar (max)' a 4000 caratteri. Quindi per SQL Server Compact non ho altra scelta che usare 'ntext' in alcuni casi. Quando lo interromperanno, suppongo che non dovrò aggiornare alcuni siti. – VoidKing

4

Il più grande svantaggio di Text (insieme a NText e Image) è che verrà rimossa in una versione futura di SQL Server, come da the documentation. Ciò renderà gli schemi più difficili da aggiornare quando verrà rilasciata quella versione di SQL Server.

4

Si dovrebbe usare apparentemente nvarchar(max):

MSDN

27

ntext sarà sempre memorizzare i dati in una pagina database separato, mentre nvarchar(max) cercherà di memorizzare i dati all'interno del record di database stesso.

Quindi nvarchar(max) è leggermente più veloce (se il testo è più piccolo di 8 kB). Ho anche notato che le dimensioni del database cresceranno leggermente più lentamente, anche questo è positivo.

Vai a nvarchar(max).

1

Desidero aggiungere che è possibile utilizzare la clausola .WRITE per aggiornamenti parziali o completi e allegati ad alte prestazioni ai tipi di dati varchar(max)/nvarchar(max).

Here è possibile trovare un esempio completo di utilizzo della clausola .WRITE.

Problemi correlati