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

Oracle पसंदीदा कॉलम लंबाई

प्रदर्शन में कोई अंतर नहीं है। और 2 की शक्ति के कारण कोई छिपा हुआ अनुकूलन नहीं किया गया है।

केवल एक चीज जो चीजों को संग्रहीत करने के तरीके में फर्क करती है, वह है वास्तविक जानकारी। एक VARCHAR2(2000) . में संग्रहीत 100 वर्ण कॉलम को ठीक उसी तरह संग्रहीत किया जाता है जैसे VARCHAR2(500) . में 100 वर्णों को संग्रहीत किया जाता है कॉलम।

लंबाई को व्यावसायिक बाधा के रूप में सोचें , डेटा प्रकार के भाग के रूप में नहीं। केवल एक चीज जो लंबाई के बारे में आपके निर्णय को संचालित करती है, वह है डेटा के बारे में व्यावसायिक बाधाएं जो वहां डाली जाती हैं।

संपादित करें :एकमात्र स्थिति जहां लंबाई करता है फर्क पड़ता है, जब आपको उस कॉलम पर एक इंडेक्स की आवश्यकता होती है। पुराने Oracle संस्करणों (<10) की कुंजी लंबाई पर एक सीमा थी और सूचकांक बनाते समय इसकी जाँच की गई थी।

हालांकि Oracle 11 में यह संभव है, 4000 वर्णों वाले मान पर अनुक्रमणिका रखना सबसे बुद्धिमानी का विकल्प नहीं हो सकता है।

2 संपादित करें :

तो मैं उत्सुक था और एक साधारण परीक्षण सेट किया:

create table narrow (id varchar(40));
create table wide (id varchar(4000));

फिर दोनों तालिकाओं को 40 'X' से बने तारों से भर दिया। यदि भंडारण के बीच वास्तव में एक (पर्याप्त) अंतर था, तो डेटा पुनर्प्राप्त करते समय इसे किसी भी तरह दिखाना चाहिए, है ना?

दोनों तालिकाओं में ठीक 1048576 पंक्तियाँ हैं।

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> set autotrace traceonly statistics
SQL> select count(*) from wide;


Statistics
----------------------------------------------------------
          0  recursive calls
          1  db block gets
       6833  consistent gets
          0  physical reads
          0  redo size
        349  bytes sent via SQL*Net to client
        472  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> select count(*) from narrow;


Statistics
----------------------------------------------------------
          0  recursive calls
          1  db block gets
       6833  consistent gets
          0  physical reads
          0  redo size
        349  bytes sent via SQL*Net to client
        472  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL>

तो दोनों तालिकाओं के लिए पूर्ण तालिका स्कैन ने बिल्कुल वैसा ही किया। तो क्या होता है जब हम वास्तव में डेटा का चयन करते हैं?

SQL> select * from wide;

1048576 rows selected.


Statistics
----------------------------------------------------------
          4  recursive calls
          2  db block gets
      76497  consistent gets
          0  physical reads
          0  redo size
   54386472  bytes sent via SQL*Net to client
     769427  bytes received via SQL*Net from client
      69907  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
    1048576  rows processed

SQL> select * from narrow;

1048576 rows selected.


Statistics
----------------------------------------------------------
          4  recursive calls
          2  db block gets
      76485  consistent gets
          0  physical reads
          0  redo size
   54386472  bytes sent via SQL*Net to client
     769427  bytes received via SQL*Net from client
      69907  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
    1048576  rows processed

SQL>

लगातार हो जाने में थोड़ा अंतर है, लेकिन यह कैशिंग के कारण हो सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या ओरेकल में उपनाम को परिभाषित करने के लिए 'as' कीवर्ड आवश्यक है?

  2. दशमलव वर्ष को तिथि में बदलें

  3. Oracle डाटाबेस 11g में त्रुटि ORA-12638

  4. एक XSD दिनांक xs:dateTime को Oracle दिनांक में कनवर्ट करना

  5. किसी ऑब्जेक्ट को संदर्भित करते समय ओरेकल को कॉलम के लिए उपनाम की आवश्यकता क्यों होती है?