Considering you're storing an ID in the session anyway, the session makes the most sense. Doing a session_start() loads your session information so whether you've loaded 1 or 10 items after that is largely irrelevant (unless they're really large but that'll be a problem in any case).
So stick with the session.
If you get really concerned about speed use an in-memory cache like APC or memcache. Worrying about speed for 10 items from the filesystem or database is a distraction. The difference is going to be so minimal as to be irrelevant.
Note: the above assumes two things:
- The query is performant (retrieving 10 rows out of 100k should be doable in under 0.1 seconds); and
- You are doing one query not 10.