Influencing the Execution Plan

I had a performance problem recently with SQL Server, and I went through the standard performance checklist, however it didn’t solve the problem permanently. Sometimes it would perform well, but most times it was performing poorly. I knew the next step was to mess with the execution plan. This is something I really don’t like.

You do not want to force SQL Server to use a particular execution plan, because SQL Server can pick different execution plans depending on how much data will be processed. When it processes a few rows, it will choose a plan that is optimized for a few rows (and typically use nested loops). If the same script processes a lot of rows, it will use a plan that is optimized for a lot of rows (and use merge joins or hash joins). By forcing SQL Server to use single execution plan, you prevent it from using the most efficient execution plan for different scenarios.

But what happens if SQL Server estimates the wrong number of rows? The worst thing it can do is estimate few rows, use an execution plan optimized for a few rows, and actually process a large number of rows. In this scenario, you will find a very slow query.

I found an easy fix for this situation. Use the OPTION(HASH JOIN, MERGE JOIN) modifier to any SELECT, INSERT, UPDATE, or DELETE statement. For instance:

UPDATE cust
SET CustomerSourceID = th.SourceID
FROM Customer cust
INNER JOIN TransactionHeader th ON th.CustomerID = cust.CustomerID
WHERE cust.CustomerSourceID IS NULL
OPTION (HASH JOIN, MERGE JOIN)

The OPTION (HASH JOIN, MERGE JOIN) modifier does not allow SQL Server to use nested loops. Since nested loops are typically efficient for a small number of rows, this causes SQL Server to optimize your query for a large number of rows. Even if this query encounters a few rows, the plan will be moderately efficient.

The good thing about OPTION (HASH JOIN, MERGE JOIN) is

  • It does not require a statement to be restructured.
  • It will not likely introduce any bugs.

The bad thing about it is

  • You prevent SQL Server from selecting the best execution plan for all scenarios. The plan will be optimized for a large number of rows.

About Clay Lenhart

I am a DBA/Technical Architect for Latitude Group and love technology.
This entry was posted in SQL Server Development and tagged , , . Bookmark the permalink.

8 Responses to Influencing the Execution Plan

  1. Jim says:

    Thanks so much for this. I have been trouble shooting a bug a few days now and this solved my problem. I was loading data from an Excel 2007 file into a SQL Server table. When I started appending data to the table using an insert statement I couldn’t get the new data to return in some of my queries. After messing with the date formats and join formats I realized the execution plans were different (despite the data sets having roughly the same number of rows). The appended data used nested loops in the execution plans whereas the data imported did not. Its probably something to do with the indexes but your recommendation to use the OPTION worked like a charm! Thanks for the post!

  2. [url=http://www.eevance.com/tokei/gaga/index.html]ティソは、スイスのイータunitas 6497手動巻き機械的運動として始まった。この運動は、しばしば選ばれるとき、白骨化はそれがすべてどのように働くのを見る多くのその内臓を掻き出すように本当にできました。それさえ巧みに白骨化したと刻まれたときは非常に美しく見えます基本的な運動を助けます。どんなティソここでしました。完全に白骨化した腕時計を提供します、しかし、1つのことをまだ読みやすいです。部分のダイヤルの詳細は以下の機転で時間と分の指標の全てを持つことになる。ロレックス スーパーコピー ブラックまたはシルバーダイヤルと来て、ティソのスポーティ・ローマ数字としては、24時間の時間分のフルスケールを使用しています。ダイヤルに切って、さかさまのキノコに似ている。この窓は時間に干渉しない、そして、あなたは右に移動します。[/url]

  3. [url=http://www.gowatchs.com/brand-177.html]保温性に優れたダウンジャケット厳しい審査に合格したダウンを採用しているため、真冬でもTシャツ+ダウンジャケットでも充分過ごせる程の非常に高い保温性があります。当店のスタッフも、冬場はダウンジャケットの下は薄手のインナーで過ごしています。本店の商品は100%本物保証!人気の愛であるというモンクレールダウンジャケット マヤを激安通販!2016年冬春モンクレール新作など激安セール。お客様一番の選択と言えます![/url]

  4. [url=http://www.gowatchs.com/brand-215.html]2012年に戻って、ボールの腕時計は、彼らがビーエムダブリュー車とのコラボレーションで腕時計を製造するという興味深い発表と私はそれはかなりクールだと思った。腕時計のコレクションのためにボールがデビューして、後で行った実際のここで。 ルイヴィトンスーパーコピー 2015年の間、ボールを静かにリリースされた1つの新しい部分をボールにtimetrekkerコレクション青と黒いダイヤルバージョンの両方を含むビーエムダブリュー腕時計と家族のために、鋼の金属ブレスレットやゴムひものどちらかを見て。[/url]

  5. これはsevenfridayシリーズで私の問題である。この音はセンセーショナルかもしれないとして、私はシリーズの古典であったと思っています。それはそれとして崇拝して非常に軽蔑されるかもしれません、しかし、それに耐えた。その価格の点で、そのように見えるのは、それがその生産実行上の数千と何千もの特徴のコレクションに設定されている。その影から踏み出すとき、単に、sevenfriday sevenfridayシリーズその先駆者に接続するために何かをしました。彼らが、何sevenfriday 01シリーズv 3で明らかなように、同一のパターンレイアウトを次のリリース計画、シェアードソースからインスピレーションをとって、各シリーズの各モデルを用いた ガガミラノスーパーコピー 。で、シリーズは、1、2、3の各々と、それぞれに触発された産業の本質によって、産業革命、産業用エンジン。これは、消費者は各々の以降のシリーズが好きになったのですdnaのいくつかの表現かもしれないが、多くのバリエーションが期待できる手段(または憎しみ)は、以前のリリース。それが意味するもののために人々と女の子は、sevenfridayプレスリリース文書で請求されたラインの下の宣伝の年を維持するのにかなり創造的になるだろうということです。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>