When you ask a question on the forums, you'll often get responses that
certain ways of doing things are inefficient or that you should be doing things
a different way. While that is true, there's a flip side to this. In a perfect
world, you would always do things the most efficient way regardless of the
cost. In the real world, you've got a lot of things to do and not always enough
time to do them in. Compromises, unfortunately, must be made. Sometimes you go
ahead and use that cursor or while loop on a report that only gets run once a
month to save yourself from coming up with a much more complicated set based
method. Sometimes you use a temp table you could have done without. What needs
to be done to keep things moving isn't always the best solution, but it is often
the best solution that you have time for.
For most people, this is where that extra effort will come in. While you
might have to make the compromise to get things done, knowing
how to implement it the more efficient way (or exploring other
options after the fact) should also be a priority. Maybe you have to spend some
time out of the office working with it, doing some reading etc, but then next
time the better method might be more realistic because they've already done the
research. Making a decision with full knowledge of your alternatives to use the
much quicker to implement (but slightly worse performing) option is perfectly
acceptable in my book and completely different than just blindly implementing
things because you know how to do it one way and don't feel like learning any
other ways of doing it.
SQL Server is such a broad area that even the people at Microsoft working on
it could probably walk out of the query optimizer room and into the indexing
room and learn things. Think about that for a moment. The people
writing the software (with many years of experience) can still
learn things just by walking into the next room and asking a co-worker. (OK,
there probably isn't actually a Query Optimizer Room, but how cool would it be
if there was. I wonder if they'd have execution plan wallpaper.)
You're probably never going to know everything about SQL Server, but if the
only time you ever devote to learning more is based on the problems you
encounter in your day Job, then in my opinion you will always be limited. Don't
get me wrong, you will very often be required to learn new things to do your
job, but if that is all you do, you will always be reacting instead of being
proactive. Spending time reading Forums, Technical Blogs, books or
participating in things like T-SQL Challenges will help you expand that knowledge to new
areas that you probably could have been applying the whole time if you had known
about them. Of course, if you're reading this, you're probably already aware of
all of that... but C'est la vie.