एरलैंड सोमरस्कोग ने पिछले 16 वर्षों से इस प्रश्न का आधिकारिक उत्तर बनाए रखा है:एसक्यूएल सर्वर में सरणियाँ और सूचियाँ ।
किसी सरणी या सूची को किसी क्वेरी में पास करने के कम से कम एक दर्जन तरीके हैं; प्रत्येक के अपने विशिष्ट पेशेवरों और विपक्ष हैं।
- तालिका-मूल्यवान पैरामीटर। केवल SQL Server 2008 और उच्चतर, और संभवतः एक सार्वभौमिक "सर्वश्रेष्ठ" दृष्टिकोण के सबसे करीब।
- पुनरावृत्ति विधि। एक सीमांकित स्ट्रिंग पास करें और इसके माध्यम से लूप करें।
- सीएलआर का उपयोग करना। SQL सर्वर 2005 और उच्चतर केवल .NET भाषाओं से।
- एक्सएमएल. कई पंक्तियों को सम्मिलित करने के लिए बहुत अच्छा है; SELECTs के लिए ओवरकिल हो सकता है।
- संख्याओं की तालिका। सरल पुनरावृत्त विधि की तुलना में उच्च प्रदर्शन/जटिलता।
- निश्चित लंबाई के तत्व। निश्चित लंबाई सीमांकित स्ट्रिंग पर गति में सुधार करती है
- संख्याओं का कार्य। संख्याओं की तालिका और निश्चित-लंबाई की विविधताएं जहां किसी तालिका से ली गई संख्या के बजाय किसी फ़ंक्शन में संख्या उत्पन्न होती है।
- रिकर्सिव कॉमन टेबल एक्सप्रेशन (CTE)। SQL सर्वर 2005 और उच्चतर, अभी भी बहुत जटिल और पुनरावृत्त विधि की तुलना में उच्च प्रदर्शन नहीं है।
- डायनामिक एसक्यूएल। धीमा हो सकता है और इसके सुरक्षा निहितार्थ हैं।
- सूची को कई पैरामीटर के रूप में पास करना। थकाऊ और त्रुटि प्रवण, लेकिन सरल।
- वास्तव में धीमी विधियाँ। ऐसे तरीके जो charindex, patindex या LIKE का उपयोग करते हैं।
मैं वास्तव में इन सभी विकल्पों में से ट्रेडऑफ़ के बारे में जानने के लिए लेख को पढ़ने के लिए पर्याप्त अनुशंसा नहीं कर सकता।