COUNT(*) बनाम COUNT(कॉलम) - महत्वपूर्ण अंतर
MySQL में COUNT(*) सभी पंक्तियाँ गिनता है (NULL सहित), जबकि COUNT(columnName) केवल नॉन-NULL मान वाली पंक्तियाँ गिनता है।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE ifNotNullDemo (Name VARCHAR(20));
विभिन्न मान इन्सर्ट करें:
mysql> INSERT INTO ifNotNullDemo VALUES('Chris'), (''), ('Robert'), (NULL), (0);
सभी रिकॉर्ड:
+--------+ | Name | +--------+ | Chris | | | -- खाली स्ट्रिंग | Robert | | NULL | -- NULL मान | 0 | -- स्ट्रिंग '0' +--------+
केस 1: COUNT(*) - सभी पंक्तियाँ
mysql> SELECT COUNT(*) FROM ifNotNullDemo;
परिणाम: 5 (सभी 5 पंक्तियाँ गिनी गईं)
केस 2: COUNT(Name) - केवल नॉन-NULL
mysql> SELECT COUNT(Name) FROM ifNotNullDemo;
परिणाम: 4 (NULL वाली पंक्ति नहीं गिनी गई)
तुलना तालिका
| मान | COUNT(*) | COUNT(Name) |
|---|---|---|
| 'Chris' | ✓ गिना | ✓ गिना |
| '' (खाली स्ट्रिंग) | ✓ गिना | ✓ गिना |
| 'Robert' | ✓ गिना | ✓ गिना |
| NULL | ✓ गिना | ✗ नहीं गिना |
| '0' | ✓ गिना | ✓ गिना |
मुख्य बिंदु
COUNT(*)- पंक्तियों की कुल संख्या (प्रदर्शन के लिए ऑप्टिमाइज़्ड)COUNT(col)- उस कॉलम में नॉन-NULL मानों की संख्याCOUNT(DISTINCT col)- यूनिक नॉन-NULL मानों की संख्या- खाली स्ट्रिंग
''NULL नहीं है, इसलिए दोनों गिनते हैं COUNT(1)याCOUNT(100)भीCOUNT(*)के समान काम करते हैं
सर्वोत्तम अभ्यास: पंक्तियाँ गिनने के लिए COUNT(*) उपयोग करें - यह स्पष्ट इरादा दर्शाता है और ऑप्टिमाइज़र के लिए बेहतर है।