sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL lagrad procedur som accepterar flera Id-värden

Erland Sommarskog har behållit det auktoritativa svaret på denna fråga under de senaste 16 åren:Arrayer och listor i SQL Server .

Det finns minst ett dussin sätt att skicka en array eller lista till en fråga; var och en har sina egna unika för- och nackdelar.

  • Tabellvärderade parametrar. Endast SQL Server 2008 och högre, och förmodligen den som ligger närmast ett universellt "bästa" tillvägagångssätt.
  • Den iterativa metoden. För en avgränsad sträng och loop igenom den.
  • Använda CLR. SQL Server 2005 och högre från endast .NET-språk.
  • XML. Mycket bra för att infoga många rader; kan vara överdrivet för SELECT.
  • Siffertabell. Högre prestanda/komplexitet än enkel iterativ metod.
  • Element med fast längd. Fast längd förbättrar hastigheten över den avgränsade strängen
  • Siffrors funktion. Variationer av taltabell och fast längd där numret genereras i en funktion snarare än tas från en tabell.
  • Rekursivt vanligt tabelluttryck (CTE). SQL Server 2005 och högre, fortfarande inte alltför komplex och högre prestanda än iterativ metod.
  • Dynamisk SQL. Kan vara långsam och har säkerhetskonsekvenser.
  • Ge listan så många parametrar. Tråkig och felbenägen, men enkel.
  • Riktigt långsamma metoder. Metoder som använder charindex, patindex eller LIKE.

Jag kan verkligen inte rekommendera tillräckligt för att läsa artikeln för att lära mig mer om avvägningarna mellan alla dessa alternativ.



  1. Hur man integrerar Oracle och Kafka

  2. Hur man installerar Libreoffice på Ubuntu 16.04

  3. Oracle pivot med underfråga

  4. Det går inte att masslasta. Operativsystem felkod 5 (Åtkomst nekad.)