sql >> Databasteknik >  >> RDS >> Sqlserver

IN-klausulbegränsning i SQL Server

Ja, det finns en gräns, men MSDN anger bara att den ligger "i tusental":

Att inkludera ett extremt stort antal värden (många tusen) i en IN-sats kan förbruka resurser och returnera felen 8623 eller 8632. För att kringgå problemet, lagra objekten i IN-listan i en tabell.

När vi tittar på dessa fel i detaljer ser vi att denna gräns inte är specifik för IN men gäller för frågekomplexitet i allmänhet:

Fel 8623:

Frågeprocessorn fick slut på interna resurser och kunde inte skapa en frågeplan. Detta är en sällsynt händelse och förväntas endast för extremt komplexa frågor eller frågor som refererar till ett mycket stort antal tabeller eller partitioner. Vänligen förenkla frågan. Om du tror att du har fått det här meddelandet av misstag, kontakta kundtjänst för mer information.

Fel 8632:

Internt fel:En expressionstjänstgräns har nåtts. Leta efter potentiellt komplexa uttryck i din fråga och försök att förenkla dem.



  1. MySQL Hur infogar man i en tabell med en SELECT-underfråga som returnerar flera rader?

  2. Förbättrar Foreign Key frågeprestanda?

  3. Vad är @@SERVICENAME i SQL Server?

  4. Extrahera veckonummer från ett datum i SQL Server (T-SQL)