मुझे लगता है कि यह इंगित करने लायक है, हालांकि इसे टिप्पणियों में छुआ गया था, इस स्थिति में:
SELECT 1 FROM my_table WHERE *indexed_condition* LIMIT 1
से बेहतर है:
SELECT * FROM my_table WHERE *indexed_condition* LIMIT 1
ऐसा इसलिए है क्योंकि पहली क्वेरी को सूचकांक द्वारा संतुष्ट किया जा सकता है, जबकि दूसरी के लिए पंक्ति देखने की आवश्यकता होती है (जब तक कि तालिका के सभी कॉलम उपयोग किए गए सूचकांक में न हों)।
LIMIT
क्लॉज जोड़ने से इंजन किसी भी पंक्ति को खोजने के बाद बंद हो जाता है।
पहली क्वेरी के लिए तुलनीय होना चाहिए:
SELECT EXISTS(SELECT * FROM my_table WHERE *indexed_condition*)
जो इंजन को एक ही संकेत भेजता है (1 / * यहां कोई फर्क नहीं पड़ता), लेकिन मैं अभी भी 1 लिखूंगा जब आदत को मजबूत करने के लिए EXISTS
:
SELECT EXISTS(SELECT 1 FROM my_table WHERE *indexed_condition*)
EXISTS
यदि आप पंक्तियों से मेल नहीं खाते हैं, तो आपको एक निश्चित रिटर्न की आवश्यकता होने पर रैपिंग को जोड़ने का मतलब हो सकता है ।
...EXISTS( SELECT 1/0 FROM someothertable)
। SQL सर्वर और ओरेकल के लिए - यह *, 1 या NULL का उपयोग करने के लिए कोई फर्क नहीं पड़ता है क्योंकि EXISTS केवल एक बूलियन के लिए परीक्षण करता है जो कि 1+ मानदंडों के आधार पर मिलान करता है।