MySQL में SELECT 1 के साथ LIMIT 1 का उपयोग
हाँ, SELECT 1 क्वेरी में LIMIT 1 का उपयोग करना समझदारी है, विशेषकर बड़ी टेबल पर अस्तित्व जांच (existence check) के लिए।
समस्या: SELECT 1 बिना LIMIT
mysql> select 1 from Select1AndLimit1Demo;
यदि टेबल में 7 पंक्तियाँ हैं, तो 7 बार '1' लौटाता है।
+---+ | 1 | +---+ | 1 | | 1 | | 1 | | 1 | | 1 | | 1 | | 1 | +---+
समाधान: LIMIT 1 जोड़ें
mysql> select 1 from Select1AndLimit1Demo limit 1;
केवल एक बार '1' लौटाता है।
+---+ | 1 | +---+ | 1 | +---+
क्यों उपयोगी है?
- अस्तित्व जांच:
SELECT 1 FROM table WHERE condition LIMIT 1- यदि कोई पंक्ति मिलती है तो 1 लौटाता है, अन्यथा खाली सेट - प्रदर्शन: पहली मिलान पंक्ति के बाद स्कैन रोक देता है (पूर्ण टेबल स्कैन से बचाता है)
- नेटवर्क: कम डेटा स्थानांतरण
- एप्लिकेशन कोड: बूलियन जांच के लिए सरल (
if (rs.next()) exists = true)
उदाहरण: अस्तित्व जांच पैटर्न
-- खराब: पूरी टेबल स्कैन करता है SELECT COUNT(*) FROM users WHERE email = 'test@example.com'; -- अच्छा: पहली मिलान पर रुकता है SELECT 1 FROM users WHERE email = 'test@example.com' LIMIT 1; -- EXISTS भी अच्छा है (ऑप्टिमाइज़र समान योजना बना सकता है) SELECT EXISTS(SELECT 1 FROM users WHERE email = 'test@example.com');
नोट
SELECT 1के बजायSELECT *भी काम करता है, लेकिन1थोड़ा तेज़ और स्पष्ट है- इंडेक्स होने पर
LIMIT 1के साथ बहुत तेज़ EXISTSसिमेंटिक रूप से अधिक सही है अस्तित्व जांच के लिए