I have a class that retrieves its memeber (more or less 10 members) from a database.
My question is: is it more efficient to fetch them every time from the db (MySQL
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: