EXISTS पैटर्न के रूप में SELECT 1 का उपयोग
मान मौजूद है या नहीं जांचने के लिए SELECT 1 पैटर्न का उपयोग करें। यह पूर्ण पंक्ति लौटाने से अधिक कुशल है।
सिंटैक्स:
SELECT 1 FROM yourTableName WHERE yourColumnName = yourValue;
यदि उपरोक्त 1 लौटाता है, तो मान डेटाबेस में मौजूद है।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(40),
StudentAge INT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable (StudentName, StudentAge) VALUES ('Chris', 21);
mysql> INSERT INTO DemoTable (StudentName, StudentAge) VALUES ('David', 20);
mysql> INSERT INTO DemoTable (StudentName, StudentAge) VALUES ('Bob', 22);
mysql> INSERT INTO DemoTable (StudentName, StudentAge) VALUES ('Tom', 19);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Chris | 21 | | 2 | David | 20 | | 3 | Bob | 22 | | 4 | Tom | 19 | +-----------+-------------+------------+
MySQL डेटाबेस में मान मौजूद है या नहीं जांचें:
mysql> SELECT 1 FROM DemoTable WHERE StudentName = 'Bob';
आउटपुट:
+---+ | 1 | +---+ | 1 | +---+ 1 row in set
व्याख्या:
- SELECT 1: वास्तविक कॉलम डेटा के बजाय स्थिर मान 1 लौटाता है
- WHERE StudentName = 'Bob': 'Bob' नाम वाली पंक्ति खोजता है
- परिणाम: 1 पंक्ति मिली → मान मौजूद है
- यदि कोई पंक्ति न मिले → खाली परिणाम सेट (0 पंक्तियाँ)
क्यों SELECT 1?
- प्रदर्शन: पूर्ण पंक्ति डेटा पढ़ने/लौटाने की आवश्यकता नहीं
- इंडेक्स उपयोग: कवरिंग इंडेक्स के साथ बहुत तेज़
- अर्ध-जॉइन (Semi-join): EXISTS सबक्वेरी में इसी पैटर्न का उपयोग होता है
EXISTS के साथ उपयोग:
SELECT * FROM OtherTable WHERE EXISTS (SELECT 1 FROM DemoTable WHERE StudentName = 'Bob');
नोट: कुछ डेवलपर्स SELECT * या SELECT COUNT(*) उपयोग करते हैं, लेकिन SELECT 1 सर्वोत्तम अभ्यास है जब केवल अस्तित्व जांचना हो।