• your backup and restore will take less time 🙂

    You might want to look at partitioning your large tables, especially if you are only looking at a portion of the data (e.g. table holds 5 years transactions and you only normally report on last year and this year for comparisons)

    You are more likely to get better performance from query optimisation and indexing. you don't say which version you are on (presume 2005) but you may want to look at covering indexes.

    Any query that is using functions can be slow. Look at the speed differential between table functions (where you declare a table, fill it with data and return it) and in-line table functions (where the table format is as per the query results set). In my experience in-line functions are 10-100x faster.

    Make sure SPs use prepared queries and parameters as the query plan optimiser can reuse the QP. If you use sp_execute on a fully formatted SQL query string then the plan has be be calculated each time.

    More RAM and more CPU cores will also help.