The most efficient way to retrieve the session data is to get it from memory, that is from the session object provided by the framework, obviously.
Now, if you want to persist information related to a given user (his "profile" in short) in order to remember it between sessions you have several different techniques, such as persisting in/retrieving from:
- a file with serialized data (one file by user)
- a "user" table with serialized data (one record by user)
- a standard database table with the user id and one column for each information
Since you indicated you don't want to generate any report on the users (which can be done with solution 3), you may as well persist it by serializing the data each time the user updates his profile, and deserialize and read it each time he connects to your application. I would store the data in a database because I don't like managing a database AND files, and having files on the web server, but that is personal taste.
Also, the user's password should not be in the session, or if it is the case it should be a hash of the password.