Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Limitation de la clause IN dans SQL Server

Oui, il y a une limite, mais MSDN précise seulement qu'elle se situe "par milliers" :

L'inclusion d'un très grand nombre de valeurs (plusieurs milliers) dans une clause IN peut consommer des ressources et renvoyer les erreurs 8623 ou 8632. Pour contourner ce problème, stockez les éléments de la liste IN dans une table.

En regardant ces erreurs en détail, nous voyons que cette limite n'est pas spécifique à IN mais s'applique à la complexité des requêtes en général :

Erreur 8623 :

Le processeur de requêtes a manqué de ressources internes et n'a pas pu produire de plan de requête. Il s'agit d'un événement rare et attendu uniquement pour les requêtes extrêmement complexes ou les requêtes faisant référence à un très grand nombre de tables ou de partitions. Veuillez simplifier la requête. Si vous pensez avoir reçu ce message par erreur, contactez le service client pour plus d'informations.

Erreur 8632 :

Erreur interne :une limite de services d'expression a été atteinte. Veuillez rechercher des expressions potentiellement complexes dans votre requête et essayez de les simplifier.