Biorąc pod uwagę, że i tak przechowujesz identyfikator w sesji, sesja ma największy sens. Wykonanie session_start() ładuje informacje o sesji, więc to, czy załadowałeś 1 czy 10 elementów później, jest w dużej mierze nieistotne (chyba że są naprawdę duże, ale i tak będzie to problem).
Więc trzymaj się sesji.
Jeśli naprawdę martwisz się szybkością, użyj pamięci podręcznej w pamięci, takiej jak APC lub memcache. Martwienie się o szybkość dla 10 elementów z systemu plików lub bazy danych jest rozpraszaniem. Różnica będzie tak minimalna, że nie będzie miała znaczenia.
Uwaga:powyższe zakłada dwie rzeczy:
- Zapytanie jest wydajne (pobranie 10 wierszy ze 100 tys. powinno być możliwe w czasie poniżej 0,1 sekundy); i
- Wykonujesz jedno zapytanie, a nie 10.