"If you manage a complex system you will frequently, if not always, be wrong." This is a quote from Michael Crichton’s speech "Fear, Complexity, & Environmental Management in the 21st Century".
In his speech, he talks about how it is human nature to make linear assumptions about non-linear, complex systems.
Although he discussed this within the context of global, environmental, political, and biological issues – it got me thinking about the feature expansion of SQL Server 2005 and performance tuning/optimization.
As SQL Server professionals we can make a certain amount of fair assumptions. We can coin "best" and "worst" practices - and suggest design and architecture choices that, on average, yield optimal results under certain circumstances.
SQL Server performance tuning, however, is one of the more slippery topics. A "my query runs too long" issue from an end-user could be the result of several factors such as hardware, network, database design, sizing, query construction, and concurrent query traffic. Embedded within each of these factors is an array of other considerations - statistics, fragmentation, cursor-usage versus set-processing, query hints, sp_configure settings, locking...
Unlike complex systems like weather or government, you do have much more control over how your SQL Server instance is configured. Also, over time a SQL Server professional develops a repertoire of troubleshooting patterns – problem/responses that build up over time, allowing him or her to fix issues quickly. There is both danger and benefit from this gained experience. The benefit is that you fix issues more quickly than someone who hasn’t experienced the problem before. The danger/drawback is that you may lead yourself down the wrong path without considering other avenues. Even after eight years of working closely with SQL Server, I still try to collect a sufficient amount of information before coming to a conclusion. Snap-judgments based on a single email complaint or discussion can often lead to incorrect assumptions.
Michael Crichton says that when you make predictions on complex systems which are incorrect, that "you have to backtrack. You have to acknowledge error. You’ve probably learned that with your children. Or, if you don’t have children, with your bosses."
Being a SQL Server professional, there is always more to learn (which is why I love this profession) - but if you are incautious in your troubleshooting approach, you'll soon be humbled. This is the reality of a complex system.