IN
. के आसपास काम करना सीमा अक्षम है और जेपीए हमेशा नौकरी के लिए सही उपकरण नहीं है। निम्नलिखित पर विचार करें:
-
हजारों बाध्य मान संभावित रूप से SQL के मेगाबाइट में परिणामित होंगे। इस SQL को डेटाबेस में भेजने में काफी समय लगेगा। डेटाबेस को SQL टेक्स्ट को टॉम का उत्तर "सूची में बहुत लंबी सीमा और रूपांतरण:WHERE x IN ( ,,, ...)" प्रश्न ।
-
एसक्यूएल पार्सिंग के कारण यह अक्षम होगा। इस लंबे SQL को पार्स करने में न केवल लंबा समय लगता है, बल्कि प्रत्येक आमंत्रण में अलग-अलग संख्या में बाध्य पैरामीटर होते हैं जिन्हें अलग से पार्स और योजनाबद्ध किया जाएगा (देखें यह लेख जो इसे समझाता है )।
-
SQL कथन में बाध्य मापदंडों की एक कठिन सीमा है। आप
OR
दोहरा सकते हैंIN
. के आसपास काम करने के लिए कुछ बार सीमा लेकिन आप किसी बिंदु पर SQL कथन सीमा को हिट करने जा रहे हैं।
ऐसे प्रश्नों के लिए आमतौर पर अस्थायी बनाना बेहतर होता है टेबल
. अपनी क्वेरी से पहले एक बनाएं, उसमें सभी पहचानकर्ता डालें और IN
का अनुकरण करने के लिए अपनी क्वेरी में इकाई तालिका से जुड़ें स्थिति।
आदर्श रूप से, आप जेपीए को एक संग्रहीत प्रक्रिया के साथ बदल सकते हैं, खासकर यदि आप डेटाबेस से हजारों पहचानकर्ताओं को निकाल रहे हैं ताकि उन्हें अगली क्वेरी में डेटाबेस में वापस भेज दिया जा सके।