Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर (T-SQL) में एक विशिष्ट विभाजन से सभी पंक्तियों को वापस करें

जब आप 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)

यह माइक्रोसॉफ्ट की सिफारिश का पालन करता है कि भविष्य में विभाजन विभाजित या विलय होने की स्थिति में किसी भी डेटा आंदोलन से बचने के लिए, पहले और आखिरी विभाजन को खाली छोड़ दें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वापसी पंक्तियाँ जिनमें SQL सर्वर में गैर-अल्फ़ान्यूमेरिक वर्ण होते हैं

  2. Microsoft SQL Server 2012 में AdventureWorks डेटाबेस नमूने स्थापित करना

  3. SQL सर्वर सक्रिय सत्र और स्थिति

  4. मुझे एक SQL सर्वर प्रतिकृति प्रोजेक्ट पर गलत प्रारूप त्रुटि वाले प्रोग्राम को लोड करने का प्रयास किया गया था

  5. समूह में MAX दिनांक रिकॉर्ड में शामिल होना