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

SQL सर्वर (T-SQL) में प्रत्येक विभाजन में पंक्तियों की संख्या वापस करने के 3 तरीके

यदि आपने पहले SQL सर्वर में एक विभाजन तालिका बनाई है, और अब आप जानना चाहते हैं कि प्रत्येक विभाजन में कितनी पंक्तियां संग्रहीत की जा रही हैं, तो यहां तीन प्रश्न हैं जिनका आप उपयोग कर सकते हैं।

विशेष रूप से, आप कर सकते हैं:

  • sys.dm_db_partition_stats के बारे में पूछें देखें
  • क्वेरी sys.partitions देखें
  • $PARTITION का उपयोग करें एक प्रश्न में कार्य करें

नीचे तीनों के उदाहरण दिए गए हैं।

sys.dm_db_partition_stats

sys.dm_db_partition_stats सिस्टम गतिशील प्रबंधन दृश्य वर्तमान डेटाबेस में प्रत्येक विभाजन के लिए पृष्ठ और पंक्ति गणना जानकारी देता है।

यहां Movies . नामक विभाजित तालिका की पंक्तियों की संख्या लौटाने का एक उदाहरण दिया गया है ।

SELECT
    partition_number,
    row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');

परिणाम:

+--------------------+-------------+
| partition_number   | row_count   |
|--------------------+-------------|
| 1                  | 0           |
| 2                  | 100         |
| 3                  | 3979        |
| 4                  | 0           |
+--------------------+-------------+

इस स्थिति में, पहला और अंतिम विभाजन खाली है (जैसा कि Microsoft द्वारा अनुशंसित है)।

sys.partitions

sys.partitions सिस्टम कैटलॉग दृश्य में सभी तालिकाओं के प्रत्येक विभाजन और डेटाबेस में अधिकांश प्रकार के अनुक्रमणिका के लिए एक पंक्ति होती है।

यहां बताया गया है कि हम पिछले उदाहरण के समान डेटा वापस करने के लिए इसका उपयोग कैसे कर सकते हैं।

SELECT
    partition_number,
    rows
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');

परिणाम:

+--------------------+--------+
| partition_number   | rows   |
|--------------------+--------|
| 1                  | 0      |
| 2                  | 100    |
| 3                  | 3979   |
| 4                  | 0      |
+--------------------+--------+

आप देख सकते हैं कि यह लगभग पिछली क्वेरी के समान है। अंतर केवल इतना है कि यह rows . नामक कॉलम का उपयोग करता है , जबकि पिछले वाले ने row_count . नामक कॉलम का उपयोग किया था ।

$PARTITION

$PARTITION सिस्टम फ़ंक्शन विभाजन संख्या देता है जिसमें किसी निर्दिष्ट विभाजन फ़ंक्शन के लिए विभाजन स्तंभ मानों का एक सेट मैप किया जाएगा।

इसलिए हम इस जानकारी का उपयोग एक क्वेरी बनाने के लिए कर सकते हैं जो पंक्ति गणना डेटा लौटाती है।

SELECT 
    $PARTITION.MoviesPartitionFunction(MovieId) AS [Partition Number],   
    COUNT(*) AS [Number of Rows] 
FROM Movies   
GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)
ORDER BY [Partition Number] ASC

परिणाम:

+--------------------+------------------+
| Partition Number   | Number of Rows   |
|--------------------+------------------|
| 2                  | 100              |
| 3                  | 3979             |
+--------------------+------------------+

इस उदाहरण के परिणाम के साथ एकमात्र अंतर यह है कि यह केवल गैर-रिक्त पंक्तियों की गिनती देता है।


  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. LINQ से SQL ले लो w/o छोड़ें एकाधिक SQL कथन का कारण बनता है

  3. SQL सर्वर में CTE के लिए गाइड

  4. SQL सर्वर में एक पहचान कॉलम का मूल बीज लौटाएं

  5. DATEPART () SQL सर्वर में उदाहरण