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

ओरेकल में गिनती (1) और गिनती (*) के बीच अंतर

मेरा मानना ​​है कि count(1) Oracle के पुराने संस्करणों में तेज़ हुआ करता था। लेकिन अब तक, मुझे पूरा यकीन है कि ऑप्टिमाइज़र यह जानने के लिए पर्याप्त स्मार्ट है कि count(*) और count(1) इसका मतलब है कि आप पंक्तियों की संख्या चाहते हैं और एक उपयुक्त निष्पादन योजना बनाते हैं।

ये रहा:

create table t as select * from all_objects;

Table T created.

create index tindx on t( object_name );

Index TINDX created.

select count(*) from t;

  COUNT(*)
----------
     21534

select * from table(dbms_xplan.display_cursor( NULL, NULL, 'allstats last' ));

Plan hash value: 2940353011

--------------------------------------------------------------------------------------------------
| Id  | Operation             | Name  | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
--------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |       |      1 |        |      1 |00:00:00.01 |     100 |     93 |
|   1 |  SORT AGGREGATE       |       |      1 |      1 |      1 |00:00:00.01 |     100 |     93 |
|   2 |   INDEX FAST FULL SCAN| TINDX |      1 |  18459 |  21534 |00:00:00.01 |     100 |     93 |
--------------------------------------------------------------------------------------------------

select count(1) from t;

  COUNT(1)
----------
     21534

Plan hash value: 2940353011

-----------------------------------------------------------------------------------------
| Id  | Operation             | Name  | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |       |      1 |        |      1 |00:00:00.01 |     100 |
|   1 |  SORT AGGREGATE       |       |      1 |      1 |      1 |00:00:00.01 |     100 |
|   2 |   INDEX FAST FULL SCAN| TINDX |      1 |  18459 |  21534 |00:00:00.01 |     100 |
-----------------------------------------------------------------------------------------

तो यह न केवल यह जानने के लिए पर्याप्त स्मार्ट है कि यह इस क्वेरी को अनुकूलित करने के लिए इंडेक्स का उपयोग कर सकता है, बल्कि यह विभिन्न संस्करणों के लिए एक ही निष्पादन योजना का उपयोग करता है (योजना का मूल्य समान है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android ऐप के माध्यम से OracleDB से कनेक्ट करना

  2. डीबी में सभी स्कीमा सूचीबद्ध करने के लिए ओरेकल एसक्यूएल क्वेरी

  3. PostgreSQL बनाम Oracle:लागत में अंतर, उपयोग में आसानी और कार्यक्षमता

  4. SQL में चर -> त्रुटि PLS-00103:प्रतीक का सामना करना पड़ा चुनें

  5. Oracle में किसी दिनांक से दिन का नाम कैसे प्राप्त करें?