Database developers and DBAs often play the role of gunslinger, or a hired gunman. Someone brought in to ‘kill’ the bad guy, in this case, an under-performing database. Our tools of the trade are not as dramatic as firearms, but we can do just as much damage.

Ever heard of Angry Birds? In this mobile game, users get various weapons (in the form of Angry Birds) to launch at the naughty piggies.

What are your favorite weapons?

Since @oatmeal gave free and open license to his artwork, I felt obligated as a blogger to borrow them! One of the most challenging things for me as a writer is finding relevant, compelling artwork or themes for my posts. So this blog kind of wrote itself!

By the way, we’ve updated our arsenal here at Oracle since I first wrote this post back in 2011. Things like In-Memory, dynamic execution plans, and of course all the goodies in our SQL Tuning pack. But for this post I was going for the more ground-level weapons…

Bird Database Tactic
Indexes Everyone LOVES to use indexes. Powerful, easy to deploy. Work on most levels. Take out all the piggies with one shot, and you get bonus points.
Hints Requires great precision. Some people hate them, others love them. Often seem to fly off with little or no effect.
Parallelism Instead of just 1 little annoying bird, how about 3? Perfect for certain levels, seemingly useless on others.
Common Sense There’s no magic with this bird. You need to solve this level by using your head. This is the entry level bird in the game, and it should be your first weapon of choice in the database too. Instead of using some performance hack or undocumented tweak, maybe you just just ask for less data?

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.


  1. Horia Berca Reply

    Love this analogy! So educative and so funny

    Can I use it in some workshops with students? This may get 5 extra minutes of attention from their side.

    Keep them coming.


    • I would be so very honored if you did that – just share with me the results πŸ™‚ And feel free to extend and improve!

  2. You are right, it’s just that I’m so used to seeing them small on a handheld that when i saw it on your blog it looked different. That and the fact that I’m only in stage 2 I thought it was a bird I never used yet πŸ™‚

  3. You should have used the bird that turns into three as parallelism :). Also, the choice of the Bomb Bird for Indexes is definitely fitting. Improper use of indexes to tune just one query can actually ruin the performance of others. Or just like a bomb, you killed the target, but took out the whole area with it.

    • JeffS

      I thought I did? That’s little blue bird that you tap, right?

  4. You need a STATS bird. If anyone raises a performance issue EVER, someone will always pipe up with “Refresh the stats” or “Have you gathered stats”.

    Unfortunately, they are correct just often enough that the blind refreshing of stats is never quite discredited.

    • JeffS

      With bad or missing stats, tuning is pointless though. The stats would be the slingshot maybe?

  5. Well this is one of the funniest blogposts about SQL, probably comparable to “.NET vs Java” πŸ˜€
    Thanks for sharing! πŸ˜€

    • JeffS

      Thanks Marco! I try to stay out of the .NET vs Java talk – I’m not a fan of either πŸ™‚

Write A Comment