In der Regel ist es eine bewährte Methode, eine IN-Klausel in Ihren Anweisungen zu verwenden, da Sie eine Unterabfrage für größere Werte verwenden.
Die Antwort sollte immer lauten: es kommt darauf an! Aus Ihrer Frage geht nicht klar hervor, ob Ihre Werteliste ein SELECT wäre oder ob Sie sie hart codieren würden. Es wäre definitiv leistungsfähiger, wenn diese mehreren tausend Werte in einer anderen Tabelle (temporäre Tabelle oder Tabellenvariable) wären und Sie sie unterwandert hätten. das heißt
SELECT * FROM Customer
WHERE CustomerID IN (SELECT ID FROM MyOtherLargeTableOfCustomers)
- wie gut indiziert ist, dass Spalte, die Sie auf, dass
IN
Klausel Leistung erbringt?
- Was ist der Datentyp? Wenn es sich um einen numerischen Datentyp handelt, sollten Sie keine Leistungsprobleme haben.
- sicherstellen, dass Ihre
STATISTICS
(wenn SQL Server) regelmäßig aktualisiert werden.
- Wenn der Datentyp char-basiert oder guid ist, können Leistungsprobleme auftreten, insbesondere wenn mehrere Abfragen gleichzeitig ausgeführt werden und die Liste zu Tausenden in der von Ihnen beschriebenen Liste liegt.
- betrachten Sie
JOIN
in Betracht diese Tabellen stattdessen; das sollte immer eine schnellere Abfrage erzeugen.
SELECT * FROM Customer AS C
INNER JOIN MyOtherLargeTableOfCustomers AS M
ON C.CustomerID = M.CustomerID