Always evaluate different ways of implementing costly queries.
Drop unused indexes.
Typically, only de-normalize data that is not updated frequently.
When measuring query performance, always include the query execution time as a secondary metric.
Minimize the size of rows in tables and indexes.
Create covered indexes for the most frequently executed queries.
Don't forget to index foreign keys.
Evaluate creating indexed views to cover entire queries or parts of queries.