Según el motor de base de datos que esté utilizando, puede haber límites en la longitud de una instrucción.
SQL Server tiene un límite muy grande:
http://msdn.microsoft.com/en-us/library/ms143432.aspx
ORACLE tiene un límite muy fácil de alcanzar en el otro lado.
Entonces, para cláusulas IN grandes, es mejor crear una tabla temporal, insertar los valores y hacer un JOIN. También funciona más rápido.