A couple of years ago, I was part of a team re-developing a system in C# to fix some performance and scalability issues. At the time, I was familiar with some basic techniques with C# and Database programming to increase performance and scalability. When discussing the topic with a colleague, he recommended reading Microsoft's white paper on Improving .NET Application Performance and Scalability - It really helped me out. A word of warning: The white paper is rather long, and took me weeks to get through. Also, it hasn't been updated since it was released in early 2004 to include a lot of the newer technologies I'm now using with .Net. However, I've often referred back to it when designing a new application or system, or when confronted with a performance problem.
The reason I like this white paper so much is that it's organized well, and doesn't skimp on the technical details. A core theme of the white paper is setting goals, measuring baseline performance, and measuring performance after making changes. This fundamental technique is critical in developing high-performing and scalable systems, and it's surprising to me how often it's overlooked.
This white paper is one of a number of initiatives I've been impressed with from the Patterns and Practices group. It would be even better if they would just keep it up to date.