I would recommend using session objects over query strings (hyper links); the extra overhead involved in passing session objects is marginal on modern day servers.
However; in the extreme case that you have a server with VERY limited resources and a website with an exponentially large number of hits, then you may want to consider using the query string.
Keep in mind that 4% of code typically accounts for 50% or more of the performance bottleneck.
In other words a very small portion of your code will be responsible for your program running slowly.
Instead of worrying about writing fast code, you may want to focus on completing your application, then find the bottlenecks and tune your code.
Some links that may be of interest:
ASP.NET Session State FAQ: http://www.eggheadcafe.com/articles/20021016.asp
ASP.NET Best Practices for High Performance Applications: http://www.codeproject.com/useritems..._Practices.asp