Erland Sommarskog har bibeholdt det autoritative svar på dette spørgsmål i de sidste 16 år:Arrays og lister i SQL Server .
Der er mindst et dusin måder at videregive en matrix eller liste til en forespørgsel; hver har deres egne unikke fordele og ulemper.
- Tabelværdiparametre. Kun SQL Server 2008 og nyere, og sandsynligvis den, der er tættest på en universel "bedste" tilgang.
- Den iterative metode. Før en afgrænset streng og løkke igennem den.
- Brug af CLR. SQL Server 2005 og højere kun fra .NET-sprog.
- XML. Meget god til at indsætte mange rækker; kan være overkill for SELECTs.
- Tabel med tal. Højere ydeevne/kompleksitet end simpel iterativ metode.
- Elementer med fast længde. Fast længde forbedrer hastigheden over den afgrænsede streng
- Funktion af tal. Variationer af taltabel og fast længde, hvor tallet genereres i en funktion i stedet for taget fra en tabel.
- Rekursivt almindeligt tabeludtryk (CTE). SQL Server 2005 og højere, stadig ikke for kompleks og højere ydeevne end iterativ metode.
- Dynamisk SQL. Kan være langsom og har sikkerhedsmæssige konsekvenser.
- Bestå listen så mange parametre. Kedelig og fejlagtig, men enkel.
- Virkelig langsomme metoder. Metoder, der bruger charindex, patindex eller LIKE.
Jeg kan virkelig ikke anbefale nok til at læse artiklen for at lære om afvejningerne mellem alle disse muligheder.