COUNT(1) का उपयोग करके कुशलता से जांच करना
किसी टेबल में विशिष्ट शर्त पूरी करने वाली पंक्ति मौजूद है या नहीं, यह जांचने का सबसे कुशल तरीका COUNT(1) का उपयोग करना है।
सिंटैक्स
SELECT COUNT(1) FROM yourTableName WHERE yourCondition;
उदाहरण
1. टेबल बनाना
mysql> CREATE TABLE DemoTable (
Id INT,
FirstName VARCHAR(20)
);
Query OK, 0 rows affected (0.73 sec)
2. डेटा डालना
mysql> INSERT INTO DemoTable VALUES(100, 'Larry'); mysql> INSERT INTO DemoTable VALUES(110, 'Sam'); mysql> INSERT INTO DemoTable VALUES(120, 'Mike'); mysql> INSERT INTO DemoTable VALUES(130, 'Carol'); mysql> INSERT INTO DemoTable VALUES(140, 'David');
3. सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 110 | Sam | | 120 | Mike | | 130 | Carol | | 140 | David | +------+-----------+ 5 rows in set (0.00 sec)
4. ID = 130 वाली पंक्ति की उपस्थिति जांचना
mysql> SELECT COUNT(1) FROM DemoTable WHERE Id = 130;
+----------+ | count(1) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)
परिणाम समझना
- 1 = पंक्ति मौजूद है
- 0 = पंक्ति मौजूद नहीं है
- >1 = एक से अधिक पंक्तियाँ मिलीं (यूनिक कंस्ट्रेंट नहीं होने पर)
क्यों COUNT(1) कुशल है?
| तरीका | प्रदर्शन | कारण |
|---|---|---|
| COUNT(1) | ✅ सबसे तेज़ | कॉलम एक्सेस नहीं करता, केवल पंक्ति गिनता है |
| COUNT(*) | ✅ तेज़ | MySQL ऑप्टिमाइज़र इसे COUNT(1) जैसा ही मानता है |
| COUNT(column) | ⚠️ धीमा | NULL चेक करता है |
| SELECT 1 ... LIMIT 1 | ✅ तेज़ | पहली मिलान पर रुक जाता है |
| EXISTS (SELECT 1 ...) | ✅ तेज़ | सबक्वेरी में उपयोग के लिए सर्वश्रेष्ठ |
अन्य कुशल तरीके
EXISTS के साथ (सबक्वेरी के लिए सर्वश्रेष्ठ)
SELECT CASE WHEN EXISTS(
SELECT 1 FROM DemoTable WHERE Id = 130
) THEN 'Present' ELSE 'Absent' END AS Status;
LIMIT 1 के साथ
SELECT 1 FROM DemoTable WHERE Id = 130 LIMIT 1;
यदि पंक्ति मिलती है तो 1 लौटाता है, अन्यथा खाली सेट।
एप्लिकेशन कोड में (PHP/Python/Node.js)
-- केवल अस्तित्व जांचने के लिए, डेटा नहीं लाना SELECT COUNT(1) FROM users WHERE email = 'user@example.com';
सर्वोत्तम अभ्यास
- सबक्वेरी में EXISTS उपयोग करें
- सीधी क्वेरी में COUNT(1) या COUNT(*) उपयोग करें
- WHERE क्लॉज में इंडेक्स्ड कॉलम उपयोग करें
- SELECT * FROM ... WHERE ... LIMIT 1 से बचें (अनावश्यक डेटा ट्रांसफर)