sql >> Database teknologi >  >> RDS >> Sqlserver

T-SQL-lagret procedure, der accepterer flere Id-værdier

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.



  1. Oracle Database 21c til Linux-platforme

  2. Bruger du NOLOCK Hint i EF4?

  3. Fix:"BACKUP LOG kan ikke udføres, fordi der ikke er nogen aktuel database backup." i SQL Server/SQL Edge

  4. SQL Server Transaction Log — Del 2