प्राथमिक कुंजी/अद्वितीय फ़ील्ड पर क्वेरी करते समय क्या MySQL “LIMIT 1” का उपयोग करने का कोई मतलब है?
LIMIT 1
. का उपयोग करना अच्छा अभ्यास नहीं है फ़िल्टर मानदंड के साथ क्वेरी करते समय जो प्राथमिक कुंजी या अद्वितीय बाधा के विरुद्ध है। एक प्राथमिक कुंजी, या अद्वितीय बाधा, का अर्थ है कि उस मान के साथ तालिका में केवल एक पंक्ति/रिकॉर्ड है, केवल एक पंक्ति/रिकॉर्ड कभी भी वापस किया जाएगा। LIMIT 1
. होना विरोधाभासी है प्राथमिक कुंजी/अद्वितीय फ़ील्ड पर -- कोई व्यक्ति जो बाद में कोड बनाए रखता है वह महत्व को भूल सकता है और दूसरा आपके कोड का अनुमान लगा सकता है।
लेकिन अंतिम संकेतक व्याख्या योजना है:
explain SELECT t.name FROM USERS t WHERE t.userid = 4
...रिटर्न:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
...और:
explain SELECT t.name FROM USERS t WHERE t.userid = 4 LIMIT 1
...रिटर्न:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
निष्कर्ष
कोई फर्क नहीं, कोई जरूरत नहीं। ऐसा लगता है कि इस मामले में इसे ऑप्टिमाइज़ किया गया है (केवल प्राथमिक कुंजी के विरुद्ध खोज रहा है)।
अनुक्रमित फ़ील्ड के बारे में क्या?
एक अनुक्रमित फ़ील्ड फ़िल्टर किए जा रहे मान की विशिष्टता की गारंटी नहीं देता है, एक से अधिक घटनाएँ हो सकती हैं। तो LIMIT 1
समझ में आता है, मान लीजिए कि आप एक पंक्ति वापस करना चाहते हैं।