Considerando que você está armazenando um ID na sessão de qualquer maneira, a sessão faz mais sentido. Fazer um session_start() carrega suas informações de sessão, portanto, se você carregou 1 ou 10 itens depois disso, é irrelevante (a menos que sejam muito grandes, mas isso será um problema em qualquer caso).
Então fique com a sessão.
Se você ficar realmente preocupado com a velocidade, use um cache na memória como APC ou memcache. Preocupar-se com a velocidade de 10 itens do sistema de arquivos ou banco de dados é uma distração. A diferença será tão mínima que se tornará irrelevante.
Nota:o acima assume duas coisas:
- A consulta tem bom desempenho (recuperar 10 linhas de 100 mil deve ser possível em menos de 0,1 segundo); e
- Você está fazendo uma consulta e não 10.