i need to figure out how to explain to business people that Oracle and SQL Server very complex, one might like to say intelligent creatures, that decide on their own how to run queries.

And while we can load, volume, and size test - none of it is the same as the real world.

And when a slowdown, or deadlocks, appear, it needs to be analyzed. Developers need to look at how SQL Server is deciding to run a query, and figure out if we can help it run it in some different way.

The experienced developer has a general idea how some query will be run, and that can be reflected in the initial design. But in the end, the collective heuristics of teams of developers of the database engine decide best how to run a query. And that changes over time, as the data changes.

i need to explain all this to business people; who want the system to be fully pinned down during design, and queries should now and forever run the same way - at the same speed, without deadlocks.

Where do i ask for advice on how to phrase this to non-database guys?

Why is this question on meta.SO? Because it's SQL Server related, but not a technical question.

See also

  • As to the question in the question, I'd say just tell them how it prints money. If you talk to business people about queries and indexes, they'll go numb. Hell, most won't follow after "Server". – MPelletier Sep 2 '10 at 1:48

The Programmers StackExchange site is now in public beta and would be a good place to ask that question.

  • Sounds like that would be the correct place, if it existed. For now the answer to my question is "there is no place". – Ian Boyd Aug 31 '10 at 15:21
  • @IanBoyd, I see you got 10k rep there, so it was indeed a good place for you it seems! :) I spot a lot of revival/necromancy too, see also gold badge proposal. – Nemo May 8 '15 at 7:23

Any time your software interfaces with an external system you add unpredictable variables to the mix. The more complex the external system, the more unpredictable the variables.

SQL Server is a highly complex external system. It's behavior will depend on its own code (which you can't control and can't fully understand), its hardware, the load on the server(s), the characteristics of the network, etc.

If you want to further simply your explanation, I would say that it's a bit like figure out how long it will take to drive somewhere in traffic. You can figure a best case scenario, averages, etc. But if there is a major accident or construction, everything changes.

  • +1 for the traffic example – Piskvor Aug 31 '10 at 15:26
  • 1
    Technically since this is meta, and i phrased my question under the guise of "where to ask the question", rather than asking for an actual answer to my question (so as not to incur the wrath from high atop the thing), i cannot truly accept your answer. But in all ways that matter, except rep, you can consider your answer the accepted one. It's very well written, with enough tact and calm explanation to be worthy of copy-paste into an e-mail. +1 (Edit: Plus you have 16k rep, Simon can use the rep) – Ian Boyd Aug 31 '10 at 15:33
  • @Ian I can live with that :) – user27414 Aug 31 '10 at 15:36

I might cop flack for this, but I think it's worth a shot asking that question on Server Fault. We probably have a better understanding of exactly how MSSQL decides on execution plans and chooses a join algorithm (and under what circumstances it makes the wrong choice and how to fix it when it does). Also, as soon as we see a programming question we throw it to SO, because we specifically don't deal in programming.

That said, I don't know what kind of reception it will receive. You might get some good answers, it might be nuked on the spot, but give it a go.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .