जब आप SQL सर्वर में एक विभाजित तालिका बनाते हैं, तो आप निर्दिष्ट करते हैं कि प्रत्येक विभाजन में कौन से मान जाते हैं।
यह तब किया जाता है जब आप पार्टीशन फंक्शन बनाते हैं। जब आप विभाजन फ़ंक्शन बनाते हैं, तो आप सीमा मान निर्दिष्ट करते हैं, जो यह निर्धारित करते हैं कि प्रत्येक विभाजन में कौन से मान शामिल हैं।
एक बार जब आप अपनी विभाजित तालिका बना लेते हैं, और आप डेटा सम्मिलित कर लेते हैं, तो आप एक सामान्य SELECT
चला सकते हैं डेटा वापस करने के लिए स्टेटमेंट, जैसा कि आप एक गैर-विभाजित तालिका के साथ करेंगे (वास्तव में, यहां तक कि गैर-विभाजित तालिकाओं में भी एक विभाजन होता है)।
लेकिन क्या आप जानते हैं कि आप यह भी निर्दिष्ट कर सकते हैं कि आप किस पार्टीशन से डेटा चाहते हैं?
आप इसे $PARTITION
. की सहायता से कर सकते हैं आपके WHERE
. में सिस्टम फ़ंक्शन खंड।
उदाहरण
कल्पना कीजिए कि हमारे पास एक विभाजित तालिका है जिसमें निम्नलिखित डेटा है:
+---------+-------------+ | CatId | CatName | |---------+-------------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | | 4 | Bulldog | | 5 | King George | | 6 | Sharp | | 7 | Fritz | | 8 | Garfield | | 9 | Boss | +---------+-------------+
और CatId
विभाजन स्तंभ है।
और हमने इसके विभाजन बनाने के लिए निम्नलिखित विभाजन फ़ंक्शन का उपयोग किया:
CREATE PARTITION FUNCTION CatsPartitionFunction (int)
AS RANGE LEFT FOR VALUES (-1, 5, 100);
यह हमें बताता है कि विभाजन कॉलम में मूल्यों के अनुसार डेटा कैसे संग्रहीत किया जाता है।
इसलिए अब हम एक क्वेरी चला सकते हैं जो केवल एक विशिष्ट विभाजन से डेटा लौटाती है।
दूसरे विभाजन से डेटा लौटाएं
यहां बताया गया है कि हम दूसरे विभाजन से सभी पंक्तियों को कैसे वापस कर सकते हैं।
SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 2;
परिणाम:
+---------+-------------+ | CatId | CatName | |---------+-------------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | | 4 | Bulldog | | 5 | King George | +---------+-------------+
तीसरे विभाजन से डेटा लौटाएं
और ये रहा तीसरे पार्टिशन का सारा डेटा।
SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 3;
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 6 | Sharp | | 7 | Fritz | | 8 | Garfield | | 9 | Boss | +---------+-----------+
पहले और अंतिम विभाजन से डेटा लौटाएं
इस मामले में, मेरा पहला विभाजन खाली है, क्योंकि CatId
में कोई नकारात्मक मान नहीं हैं कॉलम।
SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 1;
परिणाम:
(0 rows affected)
इसी तरह, अंतिम विभाजन भी खाली है, उस विभाजन को भरने के लिए पर्याप्त पंक्तियाँ नहीं होने के कारण।
SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 4;
परिणाम:
(0 rows affected)
यह माइक्रोसॉफ्ट की सिफारिश का पालन करता है कि भविष्य में विभाजन विभाजित या विलय होने की स्थिति में किसी भी डेटा आंदोलन से बचने के लिए, पहले और आखिरी विभाजन को खाली छोड़ दें।