सबसे बड़ी चिंता यह है कि nvarchar
प्रति वर्ण 2 बाइट्स का उपयोग करता है, जबकि varchar
1 का उपयोग करता है। इस प्रकार, nvarchar(4000)
भंडारण स्थान की समान मात्रा का उपयोग करता है varchar(8000)
*।
आपके सभी कैरेक्टर डेटा के अलावा स्टोरेज स्पेस की दुगुनी जरूरत है, इसका मतलब यह भी है:
- आपको
nvarchar
8060 बाइट पंक्ति सीमा / 8000 बाइट वर्ण स्तंभ सीमा के भीतर पंक्तियों को रखने के लिए छोटे स्तंभों का उपयोग करना पड़ सकता है ।
- यदि आप
nvarchar(max)
स्तंभों का उपयोग कर रहे हैं, तो वे जितनी जल्दी हो सके, पंक्ति से बाहर धकेल दिए varchar(max)
जाएंगे।
- आपको
nvarchar
900-बाइट इंडेक्स की सीमा के भीतर रहने के लिए छोटे कॉलम का उपयोग करना पड़ सकता है (मुझे नहीं पता कि आप इतनी बड़ी इंडेक्स कुंजी का उपयोग क्यों करना चाहते हैं, लेकिन आप कभी नहीं जानते हैं)।
इसके अलावा, साथ काम करना nvarchar
बहुत अलग नहीं है, यह मानते हुए कि आपका क्लाइंट सॉफ्टवेयर यूनिकोड को संभालने के लिए बनाया गया है। एसक्यूएल सर्वर पारदर्शी रूप से एक काटने जाएगा varchar
करने के लिए nvarchar
है, तो आप सख्ती से जब तक आप 2-बाइट (यानी यूनिकोड) शाब्दिक में पात्रों का उपयोग कर रहे स्ट्रिंग शाब्दिक के लिए एन उपसर्ग जरूरत नहीं है। ध्यान रखें कि कास्टिंग nvarchar
करने varbinary
से अलग परिणाम मिलते हैं varchar
। महत्वपूर्ण बिंदु यह है कि आपको एप्लिकेशन को काम करने के लिए तुरंत प्रत्येक varchar शाब्दिक को एक nvarchar शाब्दिक में बदलना नहीं होगा, जो प्रक्रिया को आसान बनाने में मदद करता है।
* यदि आप डेटा संपीड़न का उपयोग करते हैं (हल्के पंक्ति संपीड़न के लिए पर्याप्त है, एंटरप्राइज़ संस्करण की आवश्यकता से पहले एसक्यूएल सर्वर 2016 SP1 ) आप आमतौर पर मिल जाएगा nchar
और nvarchar
अधिक नहीं जगह लेने char
और varchar
की वजह से, यूनिकोड संपीड़न (SCSU कलन विधि का उपयोग) ।