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