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

IN-klausul begrænsning i SQL Server

Ja, der er en grænse, men MSDN angiver kun, at den ligger "i tusindvis":

Inkludering af et ekstremt stort antal værdier (mange tusinder) i en IN-klausul kan forbruge ressourcer og returnere fejl 8623 eller 8632. For at omgå dette problem skal du gemme elementerne på IN-listen i en tabel.

Når vi ser på disse fejl i detaljer, ser vi, at denne grænse ikke er specifik for IN men gælder generelt for forespørgselskompleksitet:

Fejl 8623:

Forespørgselsprocessoren løb tør for interne ressourcer og kunne ikke producere en forespørgselsplan. Dette er en sjælden hændelse og forventes kun for ekstremt komplekse forespørgsler eller forespørgsler, der refererer til et meget stort antal tabeller eller partitioner. Forenkle forespørgslen. Hvis du mener, at du har modtaget denne meddelelse ved en fejl, skal du kontakte kundesupport for at få flere oplysninger.

Fejl 8632:

Intern fejl:En grænse for udtrykstjenester er nået. Se venligst efter potentielt komplekse udtryk i din forespørgsel, og prøv at forenkle dem.



  1. Hvordan gemmer man uuid som nummer?

  2. Ny måde at kopiere filer i SQL Server 2019

  3. MySQL vælg sætning med CASE eller IF ELSEIF? Ikke sikker på, hvordan man får resultatet

  4. Hvad er fordelen ved zerofill i MySQL?