ストアド プロシージャを使用してデータを取得していますが、動的にフィルター処理する必要がありました。たとえば、ID が 5、10、または 12 のデータを取得したくない場合は、文字列としてプロシージャに送信し、ユーザー定義関数を介してテーブルに変換します。ただし、パフォーマンスを考慮する必要があるため、例を次に示します。
解決策 1:
SELECT *
FROM Customers
WHERE CustomerID NOT IN (SELECT Value
FROM dbo.func_ConvertListToTable('4,6,5,1,2,3,9,222',','));
解決策 2:
CREATE TABLE #tempTable (Value NVARCHAR(4000));
INSERT INTO #tempTable
SELECT Value FROM dbo.func_ConvertListToTable('4,6,5,1,2,3,9,222',',')
SELECT *
FROM BusinessAds
WHERE AdID NOT IN (SELECT Value FROM #tempTable)
DROP TABLE #tempTable
パフォーマンスに優れたソリューションはどれですか?