MySQL शर्त सीमा में


84

अरे, मुझे आईडी के एक बड़े सेट के साथ अपने MySQL स्टेटमेंट में IN कंडीशन का उपयोग करना है।

उदाहरण

SELECT * FROM users WHERE id IN (1,2,3,4...100000)

क्या आइटम में आईएन स्टेटमेंट हो सकता है?


जवाबों:


107

कोई नहीं है, IN फंक्शन के बारे में मैनुअल की जाँच करें :

INसूची में मानों की संख्या केवल max_allowed_packet मान द्वारा सीमित है ।


इसलिए यदि मेरे पास है, उदाहरण के लिए, के साथ एक अद्यतन where id IN (14000 ids), यह तब तक काम करेगा जब तक कि अपडेट क्वेरी 64 एमबी (जो कि डिफ़ॉल्ट मान) से कम है, सही है?
ओलेग अब्राजेव

1
@OlegAbrazhaev INकीवर्ड में कोई बिल्ड-इन सीमाएँ नहीं हैं, हालाँकि ऐसी अन्य सीमाएँ भी हो सकती हैं, max_allowed_packetजो अप्रत्यक्ष रूप से मानों की संख्या को सीमित कर सकती हैं। यदि आप यह मान 1024 (बाइट्स) पर सेट करते हैं, तो आप केवल सीमित संख्या में मानों का उपयोग कर सकते हैं।
प्रागमन

20

जहां तक ​​मैं mysql में जानता हूं, INबयान में वस्तुओं की कोई सीमा नहीं है ।

ऑर्कुल ऑल्टो में INकथन में 1000 वस्तुओं की सीमा है ।

लेकिन INजब तक उस स्तंभ को अनुक्रमित नहीं किया जाता, तब तक आपके क्वेरी प्रदर्शन में अधिक आइटम धीमा हो जाएगा।


3
निर्भर करता है, यदि IN सर्च प्राइमरी की है, तो फास्ट कारण इंडेक्स से वापसी है
ajreal

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.