Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Ograniczenie klauzuli IN w SQL Server

Tak, istnieje limit, ale MSDN określa tylko, że jest „w tysiącach”:

Włączenie bardzo dużej liczby wartości (wiele tysięcy) w klauzuli IN może zużywać zasoby i zwracać błędy 8623 lub 8632. Aby obejść ten problem, przechowuj elementy z listy IN w tabeli.

Przyglądając się szczegółowo tym błędom, widzimy, że ten limit nie dotyczy tylko IN ale dotyczy ogólnie złożoności zapytań:

Błąd 8623:

Procesorowi zapytań zabrakło zasobów wewnętrznych i nie mógł utworzyć planu zapytań. Jest to rzadkie zdarzenie i oczekuje się go tylko w przypadku bardzo złożonych zapytań lub zapytań, które odwołują się do bardzo dużej liczby tabel lub partycji. Proszę uprościć zapytanie. Jeśli uważasz, że otrzymałeś tę wiadomość przez pomyłkę, skontaktuj się z obsługą klienta, aby uzyskać więcej informacji.

Błąd 8632:

Błąd wewnętrzny:osiągnięto limit usług wyrażeń. Poszukaj w zapytaniu potencjalnie złożonych wyrażeń i spróbuj je uprościć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować sqlcmd i bcp na Ubuntu?

  2. T-SQL — aliasowanie przy użyciu =kontra as

  3. Transponuj zestaw wierszy jako kolumny w SQL Server 2000

  4. Jak wstawić dane pliku binarnego do binarnego pola SQL za pomocą prostej instrukcji INSERT?

  5. Konwertuj format daty na format DD/MMM/RRRR w SQL Server