Abbiamo un problema simile in un'applicazione scritta per MS SQL Server 7. Anche se non mi piace la soluzione utilizzata, non siamo a conoscenza di qualcosa di meglio ...
esistono soluzioni 'meglio', nel 2008, per quanto come so, ma abbiamo zero client che lo utilizzano :)
Abbiamo creato una tabella con una funzione definita dall'utente che accetta una stringa delimitata da virgole di ID e restituisce una tabella di ID. L'SQL quindi legge ragionevolmente bene, e nessuno di questi è dinamico, ma c'è ancora il fastidioso doppio overhead:
1.Cliente concatena gli ID nella stringa
2. SQL Server analizza la stringa per creare una tabella di ID
Ci sono molti modi di trasformare '1,2,3,4,5' in una tabella di ID, ma la stored procedure che utilizza la funzione finisce per assomigliare ...
CREATE PROCEDURE my_road_to_hell @IDs AS VARCHAR(8000)
AS
BEGIN
SELECT
*
FROM
myTable
INNER JOIN
dbo.fn_split_list(@IDs) AS [IDs]
ON [IDs].id = myTable.id
END
PER FAVORE, evitare l'opzione LIKE. Le conversioni di stringhe sono lente, i confronti tra stringhe sono lenti e LIKE '% ...%' significa che gli indici non possono essere utilizzati. Non posso esagerare su quanto questa opzione dovrebbe essere evitata (imo). – MatBailie