Perhatian terbesar adalah yang nvarchar
menggunakan 2 byte per karakter, sedangkan varchar
menggunakan 1. Dengan demikian, nvarchar(4000)
menggunakan jumlah ruang penyimpanan yang sama dengan varchar(8000)
*.
Selain semua data karakter Anda yang membutuhkan ruang penyimpanan dua kali lebih banyak, ini juga berarti:
- Anda mungkin harus menggunakan
nvarchar
kolom yang lebih pendek untuk menjaga baris dalam batas kolom 8060 byte / 8000 byte karakter kolom.
- Jika Anda menggunakan
nvarchar(max)
kolom, kolom itu akan didorong lebih cepat daripada yang varchar(max)
seharusnya.
- Anda mungkin harus menggunakan
nvarchar
kolom yang lebih pendek untuk tetap berada dalam batas kunci indeks 900-byte (saya tidak tahu mengapa Anda ingin menggunakan kunci indeks yang besar, tetapi Anda tidak pernah tahu).
Selain itu, bekerja dengan nvarchar
tidak jauh berbeda, dengan asumsi perangkat lunak klien Anda dibuat untuk menangani Unicode. SQL Server akan secara transparan mengkonversi varchar
ke nvarchar
, jadi Anda tidak benar-benar membutuhkan awalan N untuk literal string kecuali jika Anda menggunakan karakter 2-byte (yaitu Unicode) dalam literal. Sadarilah bahwa pengecoran nvarchar
untuk varbinary
menghasilkan hasil yang berbeda daripada melakukan hal yang sama dengan varchar
. Poin penting adalah bahwa Anda tidak harus segera mengubah setiap varchar literal ke nvarchar literal agar aplikasi tetap berfungsi, yang membantu mempermudah proses.
* Jika Anda menggunakan kompresi data (kompresi baris ringan sudah cukup, Edisi Enterprise diperlukan sebelum SQL Server 2016 SP1 ) Anda biasanya akan menemukan nchar
dan nvarchar
tidak mengambil lebih banyak ruang daripada char
dan varchar
, karena kompresi Unicode (menggunakan algoritma SCSU) .