SQL IN Clausola 1000 limite articolo

È ansible inserire più di 1000 articoli nella clausola SQL IN? Abbiamo riscontrato problemi con il nostro database Oracle che non è stato in grado di gestirlo.

SE sì, come inseriamo più di 1000 articoli nella clausola SQL IN?

SE no, che altro posso fare?

Dovresti trasformare le clausole IN nelle clausole INNER JOIN.

Puoi trasformare una query come questa

SELECT foo FROM bar WHERE bar.stuff IN (SELECT stuff FROM asdf) 

in una query come questa.

 SELECT b.foo FROM ( SELECT DISTINCT stuff FROM asdf ) a JOIN bar b ON b.stuff = a.stuff 

Otterrai anche un sacco di prestazioni

C’è un altro modo per ovviare a ciò che non è menzionato in nessuna delle altre risposte (o altre domande con risposta):

Qualsiasi istruzione in come x in (1,2,3) può essere riscritta come (1,x) in ((1,1), (1,2), (1,3)) e il limite di 1000 elementi non sarà più applicare. Ho provato con un indice su x e spiegare il piano riporta ancora che Oracle sta usando un predicato di accesso e la scansione di intervallo.

Possiamo avere più di una istruzione “IN” per la stessa variabile.

Per esempio:

 select val from table where val in (1,2,3,...) or val in (7,8,9,....) 

Un altro modo:

 SELECT COL1, COL2, COL3 FROM YOUR_TABLE WHERE 1=1 AND COL2 IN ( SELECT VAL1 as FAKE FROM DUAL UNION SELECT VAL2 as FAKE FROM DUAL UNION SELECT VAL3 as FAKE FROM DUAL --... )