MICROSOFT SQL SERVER: Performance NVARCHAR
MICROSOFT SQL SERVER: Performance NVARCHAR

MICROSOFT SQL SERVER: Performance NVARCHAR

Performance comparison of NVARCHAR(size) Vs. NVARCHAR(max)

Ci sono differenze sostanziali nell'usare NVARHCAR(max) rispetto ad una size specifica?

 

 

 

 

ASSEGNAMENTO

Ho eseguito un po' di test per vedere cosa cambia, in termini prestazionali, tra l'uso di NVARCHAR(max) rispetto ad una size specifica.

Ho fatto eseguire, tramite SQL SERVER Management Studio - Database Sql Server 2016, il seguente script:

 

declare @str nvarchar(MAX);
declare @startTime datetime;
declare @cnt int;

set @cnt = 0;
set @startTime = getutcdate();

while @cnt < 2000000
begin
  set @str = 'abc123';
  set @cnt = @cnt + 1;
end

select datediff(ms, @startTime, getutcdate()) AS TotalSeconds;

 

Usando 2 milioni di cicli ho notato che tra una esecuzione ed un'altra le variazioni sono poche.

Ovviamente più cicli usate più il risultato sarà corretto.

In testa cambiando la size della variabile @str potete provare le differenze.

Quelle troate da me sono:

 

2.000.000 DI CICLI

NVARCHAR(50)  : 11394 MSEC
NVARCHAR(500) : 12166 MSEC
NVARCHAR(4000): 12650 MSEC (4000 è IL VALORE MASSIMO ASSEGNABILE)
NVARCHAR(max) : 12650 MSEC

 

Come si può vedere, secondo in più secondo in meno, i valori sono assolutamente paragonabili!

 

Buon lavoro!