Jest to ograniczenie na dowolnej liście wyrażeń:
Lista wyrażeń rozdzielonych przecinkami może zawierać nie więcej niż 1000 wyrażeń.
Dlaczego 1000? Przypuszczalnie wdrożenie wymaga pewnego rodzaju limitu, a to prawdopodobnie wydawało się więcej niż wystarczające. Równie dobrze może istnieć, lub z pewnością mógł być, gdy ten limit był ustalany kilkadziesiąt lat temu, powód ograniczenia wydajności również, szczególnie gdy IN
jest konwertowany na wiele OR
oświadczenia optymalizatora w tym przypadku (które można zobaczyć, patrząc na plan wykonania).
Trudno byłoby mi wymyślić rozsądny scenariusz, który musiałby się zbliżyć do tego, ze stałymi wartościami, których i tak nie można uzyskać z innych danych jako podzapytania.
Podejrzewam, że jest to nieco związane z logicznymi ograniczeniami bazy danych, które mówią, że na przykład nie można mieć więcej niż 1000 kolumn w tabeli; ponieważ lista wyrażeń jest używana w instrukcji INSERT, aby wyświetlić zarówno kolumny, jak i wstawiane wartości, lista wyrażeń musi być w stanie to dopasować, ale może nie ma powodu, aby ją przekraczać.
Oczywiście spekulacje... bez wglądu w wewnętrzne oprogramowanie prawdopodobnie nie uzyskasz ostatecznej odpowiedzi.