• First, look into implementing snapshot isolation (SI) for the underlying db(s). If nothing else, if will reduce contention issues while you tune the indexes. Be sure to adjust as needed for the extra table overhead of SI.

    Then, if you can, end querying from Excel. It will be a never-ending nightmare.

    Finally, go after the real solution, if there is one, by analyzing all indexes on all (significant) tables, starting with the clustered indexes. Getting the best clustered index on every table is the most critical factor for performance. Do not assume that an identity is automatically right for the clustered index! You'll need to consider at least missing index stats, index usage stats and index operational stats; sometimes cardinality must be considered as well.

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.