जब मैं एक MySQL क्वेरी में LIMIT 1 को जोड़ता हूं, तो क्या यह खोज को रोक देता है क्योंकि यह 1 परिणाम पाता है (इस प्रकार इसे तेजी से बना रहा है) या क्या यह अभी भी सभी परिणामों को प्राप्त करता है और अंत में टुकड़े टुकड़े करता है?
जवाबों:
क्वेरी के आधार पर, एक सीमा क्लॉज जोड़ने से प्रदर्शन पर भारी प्रभाव पड़ सकता है। यदि आप केवल एक पंक्ति चाहते हैं (या इस तथ्य के लिए जानते हैं कि केवल एक पंक्ति क्वेरी को संतुष्ट कर सकती है), और इस बारे में निश्चित नहीं हैं कि आंतरिक ऑप्टिमाइज़र इसे कैसे निष्पादित करेगा (उदाहरण के लिए, तो जहां कोई सूचकांक और आगे नहीं मार रहा है), तो आपको निश्चित रूप से एक लिमिट खंड जोड़ना चाहिए।
के रूप में अनुकूलित प्रश्नों के लिए (छोटे तालिकाओं पर अनुक्रमित का उपयोग करके) यह शायद प्रदर्शन में बहुत ज्यादा मायने नहीं रखेगा, लेकिन फिर से - यदि आप केवल एक पंक्ति में रुचि रखते हैं, भले ही एक लिमिट क्लॉज जोड़ें।
सीमा क्वेरी के प्रदर्शन को प्रभावित कर सकती है (टिप्पणियों और नीचे दिए गए लिंक देखें) और यह MySQL द्वारा आउटपुट परिणाम सेट को भी कम कर देता है। ऐसी क्वेरी के लिए जिसमें आप एकल परिणाम की अपेक्षा करते हैं, लाभ है।
इसके अलावा, परिणाम सेट को सीमित करना वास्तव में कुल क्वेरी समय को गति दे सकता है क्योंकि बड़े परिणाम सेट का उपयोग मेमोरी और संभावित रूप से डिस्क पर अस्थायी तालिकाओं का निर्माण करता है। मैं इसका उल्लेख करता हूं क्योंकि मैंने हाल ही में एक एप्लिकेशन देखा था जो विशाल परिणाम सेट के कारण सर्वर को मारता है और सीमित संसाधन के साथ संसाधन उपयोग जबरदस्त रूप से गिरा देता है।
अधिक विवरण के लिए इस पृष्ठ की जाँच करें: MySQL प्रलेखन: सीमा अनुकूलन
यदि केवल 1 परिणाम वापस आ रहा है, तो नहीं, लिमिट इसे और तेज नहीं करेगा। यदि बहुत सारे परिणाम हैं, और आपको केवल पहले परिणाम की आवश्यकता है, और बयानों द्वारा कोई समूह या आदेश नहीं है तो लिमिट इसे तेज कर देगा।
जवाब, संक्षेप में, हाँ है। यदि आप अपने परिणाम को 1 तक सीमित करते हैं, तो भले ही आप एक परिणाम की "उम्मीद" कर रहे हों, क्वेरी तेज़ होगी क्योंकि आपका डेटाबेस आपके सभी रिकॉर्डों को नहीं देखेगा। एक बार रिकॉर्ड करने के बाद यह बस रुक जाएगा जो आपकी क्वेरी से मेल खाता है।
UNIQUE
(याPRIMARY KEY
) बाधा (या सूचकांक) नहीं है। stackoverflow.com/questions/8467092/…