Привет.
Точно не помню, но кажется сам запрос не может быть длиной в несколько тысяч символов. В этом плане у вас может быть проблема. Ну а если влезает, то ничего лучше where IN, думаю, нет.
У вас, видимо, есть функция, вытаскивающая набор id-шников и вы ее просто подставляете в IN().
Если хотите по-другому, вам надо будет напрямую писать запрос. Проследите, из какой таблицы тянутся id и укажите такой же запрос, как это делает, предполагаемая функция в условии IN().