Вообще, запросы крайне сложно оптимизировать не имея перед глазами вообще
ничего.
Покажите create table, explain extended… Ну да ладно, поворчали, и будет.
Если вы используете простые числовые значения в IN и сам запрос простой, как пуля, например
select * from test1 where ID in (1,2,5,3);
То можно оставить как есть. На сколько я в курсе, мускуль будет всяко сам сортировать этот список, чтобы потом по нему искать. И даже индексы для этого будет использовать.
Если запросы сложнее (join, order by, union), то вас ждет печаль, а нас — более подробное описание задачи. Зачастую быстрее загрузить все ID во временную таблицу, и потом уже с ней работать. Чем ждать пока запрос с заменой обычного условия на IN отработает.