खोज…


JSON को टेक्स्ट कॉलम के रूप में संग्रहीत किया गया है

JSON पाठ प्रारूप है, इसलिए इसे मानक NVARCHAR कॉलम में संग्रहीत किया जाता है। NoSQL संग्रह दो स्तंभ कुंजी मूल्य तालिका के बराबर है:

CREATE TABLE ProductCollection (
  Id int identity primary key,
  Data nvarchar(max)
)

nvarchar(max) उपयोग करें क्योंकि आप सुनिश्चित नहीं हैं कि आपके JSON दस्तावेजों का आकार क्या होगा। nvarchar(4000) और varchar(8000) का प्रदर्शन बेहतर है लेकिन आकार सीमा 8KB के साथ।

सुनिश्चित करें कि JSON ISJSON का उपयोग करके ठीक से स्वरूपित किया गया है

चूँकि JSON को टेक्स्ट कॉलम संग्रहीत किया जाता है, आप यह सुनिश्चित करना चाहते हैं कि यह ठीक से स्वरूपित हो। आप JSON कॉलम पर CHECK बाधा जोड़ सकते हैं जो जाँचता है कि JSON सही ढंग से स्वरूपित है:

CREATE TABLE ProductCollection (
  Id int identity primary key,
  Data nvarchar(max)
       CONSTRAINT [Data should be formatted as JSON]
       CHECK (ISJSON(Data) > 0)
)

यदि आपके पास पहले से ही एक टेबल है, तो आप ALTER TABLE स्टेटमेंट का उपयोग करके चेक बाधा जोड़ सकते हैं:

ALTER TABLE ProductCollection
    ADD CONSTRAINT [Data should be formatted as JSON]
        CHECK (ISJSON(Data) > 0)

गणना कॉलम के रूप में JSON पाठ से मानों को उजागर करें

आप गणना कॉलम के रूप में JSON कॉलम से मानों को उजागर कर सकते हैं:

CREATE TABLE ProductCollection (
  Id int identity primary key,
  Data nvarchar(max),
  Price AS JSON_VALUE(Data, '$.Price'),
  Color JSON_VALUE(Data, '$.Color') PERSISTED
)

यदि आप PERSISTED कंप्यूटेड कॉलम जोड़ते हैं, तो JSON टेक्स्ट का मान इस कॉलम में भौतिक होगा। इस तरह से आपके क्वेरीज JSON टेक्स्ट से वैल्यू को तेजी से पढ़ सकते हैं क्योंकि किसी भी पार्सिंग की आवश्यकता नहीं है। हर बार इस पंक्ति में JSON, मूल्य फिर से गणना की जाएगी।

JSON पथ पर अनुक्रमणिका जोड़ना

JSON कॉलम में कुछ मान द्वारा डेटा को फ़िल्टर या सॉर्ट करने वाली क्वेरी आमतौर पर पूर्ण तालिका स्कैन का उपयोग करती हैं।

SELECT * FROM ProductCollection
WHERE JSON_VALUE(Data, '$.Color') = 'Black'

इस प्रकार के प्रश्नों को अनुकूलित करने के लिए, आप गैर-निरंतर कंप्यूटेड कॉलम जोड़ सकते हैं जो फ़िल्टर या सॉर्ट (इस उदाहरण JSON_VALUE (डेटा, '$ .Color') में प्रयुक्त JSON एक्सप्रेशन को उजागर करता है, और इस कॉलम पर इंडेक्स बनाएँ:

ALTER TABLE ProductCollection
ADD vColor as JSON_VALUE(Data, '$.Color')

CREATE INDEX idx_JsonColor
ON ProductCollection(vColor)

प्रश्न सादा टेबल स्कैन के बजाय सूचकांक का उपयोग करेंगे।

JSON इन-मेमोरी टेबल में संग्रहीत है

यदि आप स्मृति-अनुकूलित तालिकाओं का उपयोग कर सकते हैं, तो आप JSON को पाठ के रूप में संग्रहीत कर सकते हैं:

CREATE TABLE ProductCollection (
  Id int identity primary key nonclustered,
  Data nvarchar(max)
) WITH (MEMORY_OPTIMIZED=ON)

इन-मेमोरी में JSON के लाभ:

  • JSON डेटा हमेशा मेमोरी में होता है इसलिए कोई डिस्क एक्सेस नहीं है
  • JSON के साथ काम करते समय कोई ताले और कुंडी नहीं हैं


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow