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