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

DBA_TABLES से गणना (*) बनाम NUM_ROWS द्वारा तालिका की Oracle पंक्ति गणना

दस्तावेज़ीकरण के अनुसार NUM_ROWS "तालिका में पंक्तियों की संख्या" . है , इसलिए मैं देख सकता हूं कि यह कैसे भ्रमित करने वाला हो सकता है। हालाँकि, इन दोनों विधियों में एक बड़ा अंतर है।

यह क्वेरी सिस्टम दृश्य से MY_TABLE में पंक्तियों की संख्या का चयन करती है। यह वह डेटा है जिसे Oracle ने पहले एकत्र और संग्रहीत किया है।

select num_rows from all_tables where table_name = 'MY_TABLE'

यह क्वेरी MY_TABLE में पंक्तियों की वर्तमान संख्या की गणना करती है

select count(*) from my_table

परिभाषा के अनुसार वे डेटा के अंतर टुकड़े हैं। NUM_ROWS के बारे में आपको दो अतिरिक्त जानकारी की आवश्यकता है।

  1. दस्तावेज़ीकरण में स्तंभ नाम से एक तारांकन चिह्न है, जो इस नोट की ओर ले जाता है:

    <ब्लॉककोट>

    तारक (*) से चिह्नित कॉलम केवल तभी भरे जाते हैं जब आप ANALYZE स्टेटमेंट या DBMS_STATSpackage के साथ टेबल पर आंकड़े एकत्र करते हैं।

    इसका मतलब यह है कि जब तक आप टेबल पर आंकड़े एकत्र नहीं करते हैं तब तक इस कॉलम में कोई डेटा नहीं होगा।

  2. डिफ़ॉल्ट estimate_percent . के साथ 11g+ में एकत्रित आंकड़े , या 100% अनुमान के साथ, उस समय के लिए एक सटीक संख्या लौटाएगा। लेकिन आंकड़े 11g से पहले या कस्टम estimate_percent . के साथ एकत्र किए गए 100% से कम, गतिशील नमूने का उपयोग करता है और गलत हो सकता है। यदि आप 99.999% एकत्र करते हैं तो एक पंक्ति छूट सकती है, जिसका अर्थ है कि आपको जो उत्तर मिलता है वह गलत है।

अगर आपकी टेबल कभी नहीं . है अद्यतन किया गया है तो तालिका में पंक्तियों की संख्या का पता लगाने के लिए ALL_TABLES.NUM_ROWS का उपयोग करना निश्चित रूप से संभव है। हालांकि , और यह एक बड़ी बात है, यदि कोई प्रक्रिया आपकी तालिका से पंक्तियों को सम्मिलित या हटाती है तो यह सबसे अच्छा अनुमान होगा और इस पर निर्भर करता है कि आपका डेटाबेस स्वचालित रूप से आंकड़े एकत्र करता है या नहीं, यह बहुत ही गलत हो सकता है।

सामान्यतया, सिस्टम तालिकाओं पर निर्भर होने के बजाय तालिका में पंक्तियों की संख्या को वास्तव में गिनना हमेशा बेहतर होता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle क्लाउड इंफ्रास्ट्रक्चर पर कंपार्टमेंट के बारे में जानने योग्य 7 बातें

  2. ऑरैकल में, मैं यूटीएफ 8 प्रदर्शित करने के लिए अपना सत्र कैसे बदलूं?

  3. Oracle SQL - अधिकतम () NULL मानों के साथ

  4. ईबीएस 12.2.5 और उच्चतर:लॉगिन पेज बटन मिसलिग्न्मेंट

  5. Oracle क्लाउड प्लेटफ़ॉर्म पर Oracle डेटाबेस 12c के साथ Oracle JDeveloper 12c का उपयोग करना, भाग 3