Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL съхранена процедура, която приема множество Id стойности

Erland Sommarskog поддържа авторитетния отговор на този въпрос през последните 16 години:Масиви и списъци в SQL Server .

Има поне дузина начина за предаване на масив или списък към заявка; всеки има своите уникални плюсове и минуси.

  • Параметри с таблична стойност. Само SQL Server 2008 и по-нови версии и вероятно най-близкият до универсалния „най-добър“ подход.
  • Итеративният метод. Прекарайте ограничен низ и го прокарайте.
  • Използване на CLR. SQL Server 2005 и по-нови версии само от .NET езици.
  • XML. Много добър за вмъкване на много редове; може да е излишно за SELECTs.
  • Таблица с числа. По-висока производителност/сложност от обикновен итеративен метод.
  • Елементи с фиксирана дължина. Фиксираната дължина подобрява скоростта над ограничения низ
  • Функция на числата. Вариации на таблица с числа и фиксирана дължина, при които числото се генерира във функция, а не се взема от таблица.
  • Рекурсивен израз на обща таблица (CTE). SQL Server 2005 и по-нова версия, все още не е твърде сложен и по-висока производителност от итеративния метод.
  • Динамичен SQL. Може да бъде бавен и има последици за сигурността.
  • Предаване на списъка като много параметри. Досадно и податливо на грешки, но просто.
  • Наистина бавни методи. Методи, които използват charindex, patindex или LIKE.

Наистина не мога да препоръчам достатъчно, за да прочетете статията, за да научите за компромисите между всички тези опции.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server :SUM() от множество редове, включително клаузи where

  2. Как да премахнете пощенски акаунт в база данни от профил в SQL Server (T-SQL)

  3. Как да разделите стойност, разделена със запетая, на колони

  4. Искам да използвам оператор CASE, за да актуализирам някои записи в sql server 2005

  5. Как да вмъкна таблица с данни в таблица на база данни на SQL Server?