Wir haben ein ähnliches Problem in einer Anwendung für MS SQL Server geschrieben 7. Obwohl ich die Lösung verwendet nicht mögen, sind wir von nichts wissen besser ...
‚Besser‘ existieren Lösungen bis 2008 Wie ich weiß, aber wir haben Zero-Clients mit dem :)
Wir erstellten eine Tabelle Wert benutzerdefinierte Funktion, die eine durch Kommas getrennte Zeichenfolge von IDs und gibt eine Tabelle von IDs zurück. Die SQL liest dann einigermaßen gut, und nichts davon ist dynamisch, aber es gibt immer noch den lästigen doppelten Overhead:
1.Der Client verkettet die IDs in die Zeichenfolge
2. SQL Server analysiert die Zeichenfolge, um eine Tabelle mit IDs zu erstellen
Es gibt viele Möglichkeiten, '1,2,3,4,5' in eine ID-Tabelle zu verwandeln, aber die gespeicherte Prozedur, die die Funktion verwendet endet aussehen wie ...
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
BITTE vermeiden Sie die LIKE-Option. String-Konvertierungen sind langsam, String-Vergleiche sind langsam und LIKE '% ...%' bedeutet, dass Indizes nicht verwendet werden können. Ich kann nicht übertreiben, wie viel diese Option vermieden werden sollte (imo). – MatBailie