Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Einschränkung der IN-Klausel in SQL Server

Ja, es gibt eine Grenze, aber MSDN gibt nur an, dass sie "in Tausenden" liegt:

Das Einschließen einer extrem großen Anzahl von Werten (viele Tausend) in eine IN-Klausel kann Ressourcen verbrauchen und Fehler 8623 oder 8632 zurückgeben. Um dieses Problem zu umgehen, speichern Sie die Elemente in der IN-Liste in einer Tabelle.

Wenn wir uns diese Fehler im Detail ansehen, sehen wir, dass diese Grenze nicht spezifisch für IN ist gilt aber allgemein für die Abfragekomplexität:

Fehler 8623:

Der Abfrageprozessor hatte keine internen Ressourcen mehr und konnte keinen Abfrageplan erstellen. Dies ist ein seltenes Ereignis und wird nur bei extrem komplexen Abfragen oder Abfragen erwartet, die auf eine sehr große Anzahl von Tabellen oder Partitionen verweisen. Bitte vereinfachen Sie die Abfrage. Wenn Sie glauben, dass Sie diese Nachricht fälschlicherweise erhalten haben, wenden Sie sich für weitere Informationen an den Kundendienst.

Fehler 8632:

Interner Fehler:Ein Expression-Services-Limit wurde erreicht. Suchen Sie in Ihrer Abfrage nach möglicherweise komplexen Ausdrücken und versuchen Sie, sie zu vereinfachen.