Teniendo en cuenta que está almacenando una ID en la sesión de todos modos, la sesión tiene más sentido. Hacer un session_start() carga la información de su sesión, por lo que si ha cargado 1 o 10 elementos después de eso es en gran medida irrelevante (a menos que sean realmente grandes, pero eso será un problema en cualquier caso).
Así que sigue con la sesión.
Si está realmente preocupado por la velocidad, use un caché en memoria como APC o Memcache. Preocuparse por la velocidad de 10 elementos del sistema de archivos o la base de datos es una distracción. La diferencia será tan mínima que será irrelevante.
Nota:lo anterior supone dos cosas:
- La consulta es eficaz (recuperar 10 filas de 100k debería ser factible en menos de 0,1 segundos); y
- Estás haciendo una consulta, no 10.