Для этого есть другой обходной путь, который не упоминается ни в одном из других ответов (или в других ответах на вопросы):
Любой оператор типа наподобие x in (1,2,3)
может быть переписан как (1,x) in ((1,1), (1,2), (1,3))
, и ограничение в 1000 элементов больше не будет применяться. Я проверил с индексом x
и объяснил, что план все еще сообщает, что Oracle использует предикат доступа и сканирование диапазона.