Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Limitazione della clausola IN in SQL Server

Sì, c'è un limite, ma MSDN specifica solo che si trova "a migliaia":

L'inclusione di un numero estremamente elevato di valori (molte migliaia) in una clausola IN può consumare risorse e restituire errori 8623 o 8632. Per aggirare questo problema, archiviare gli elementi nell'elenco IN in una tabella.

Osservando questi errori in dettaglio, vediamo che questo limite non è specifico per IN ma si applica alla complessità delle query in generale:

Errore 8623:

Il processore di query ha esaurito le risorse interne e non è stato in grado di produrre un piano di query. Questo è un evento raro e previsto solo per query o query estremamente complesse che fanno riferimento a un numero molto elevato di tabelle o partizioni. Si prega di semplificare la domanda. Se ritieni di aver ricevuto questo messaggio per errore, contatta il servizio di assistenza clienti per ulteriori informazioni.

Errore 8632:

Errore interno:è stato raggiunto un limite di servizi di espressione. Cerca espressioni potenzialmente complesse nella tua query e prova a semplificarle.