Perhatian terbesar adalah yang nvarcharmenggunakan 2 byte per karakter, sedangkan varcharmenggunakan 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
nvarcharkolom 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
nvarcharkolom 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 nvarchartidak jauh berbeda, dengan asumsi perangkat lunak klien Anda dibuat untuk menangani Unicode. SQL Server akan secara transparan mengkonversi varcharke 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 nvarcharuntuk varbinarymenghasilkan 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 nchardan nvarchartidak mengambil lebih banyak ruang daripada chardan varchar, karena kompresi Unicode (menggunakan algoritma SCSU) .