Mirroring into another database is certainly an option, it depends how 'real time' you need your query data to be
SQL Server Replication[
] is something that might help you here.
Transactional Replication[
^] is near real-time ... otherwise, simply creating a nightly 'snapshot' of your data for query purposes might be acceptable
How many rows are we talking about?
If it's only a few million, well designed indexes + a data access plan should be able to handle the query load
e.g. Don't just let users link into your tables and perform any queries they want, force them to use a 'query' stored procedure that has been indexed tuned and the plans analysed.