COUNT(*) vs COUNT(column) - अंतर समझें
MySQL में पंक्तियों की गिनती के लिए COUNT(*) और COUNT(column) में **महत्वपूर्ण अंतर** है।
सिंटैक्स
SELECT COUNT(*) AS AllRows FROM yourTableName;
SELECT COUNT(columnName) AS NonNullRows FROM yourTableName;
व्यावहारिक उदाहरण
1. टेबल बनाएं और NULL सहित डेटा डालें
mysql> CREATE TABLE CountingDemo (BookId INT);
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO CountingDemo VALUES(100);
mysql> INSERT INTO CountingDemo VALUES(); -- NULL
mysql> INSERT INTO CountingDemo VALUES(200);
mysql> INSERT INTO CountingDemo VALUES(300);
mysql> INSERT INTO CountingDemo VALUES(); -- NULL
2. डेटा देखें
mysql> SELECT * FROM CountingDemo;
+--------+
| BookId |
+--------+
| 100 |
| NULL |
| 200 |
| 300 |
| NULL |
+--------+
5 rows in set (0.00 sec)
3. COUNT(*) - सभी पंक्तियाँ (NULL सहित)
mysql> SELECT COUNT(*) AS AllValues FROM CountingDemo;
+----------+
| AllValues|
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)
4. COUNT(BookId) - केवल गैर-NULL मान
mysql> SELECT COUNT(BookId) AS NonNullValues FROM CountingDemo;
+-----------------+
| NonNullValues |
+-----------------+
| 3 |
+-----------------+
1 row in set (0.00 sec)
मुख्य अंतर
| फ़ंक्शन | गिनता है | NULL व्यवहार | प्रदर्शन |
|---|---|---|---|
COUNT(*) | सभी पंक्तियाँ | NULL शामिल | तेज (इंडेक्स/मेटाडेटा उपयोग कर सकता है) |
COUNT(col) | गैर-NULL मान | NULL बाहर | थोड़ा धीमा (कॉलम पढ़ना पड़ता है) |
कब कौन सा उपयोग करें?
- COUNT(*): कुल पंक्ति संख्या, पेजिनेशन, EXISTS चेक - **डिफ़ॉल्ट विकल्प**
- COUNT(col): विशिष्ट कॉलम में भरे मानों की संख्या (पूर्णता जांच)
- COUNT(DISTINCT col): अद्वितीय गैर-NULL मानों की संख्या
प्रदर्शन नोट
- MyISAM:
COUNT(*)तत्काल (मेटाडेटा में संग्रहीत) - InnoDB:
COUNT(*)स्कैन करता है (MVCC के कारण), लेकिनCOUNT(*)अभी भीCOUNT(col)से तेज - बड़े InnoDB टेबल्स पर अनुमानित गिनती के लिए:
SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t'
निष्कर्ष: **कुल रिकॉर्ड गिनने के लिए हमेशा COUNT(*) उपयोग करें** - यह मानक, तेज, और स्पष्ट है।