VIEW の実行プラン

SQL Server Advent Calendar 22日目 です。

今日は VIEW の実行プランのお話しです。

正規化された ER があった時に、マスタとくっつけて名称も取りたいというのはよくあると思います。

そこで、単純に全部くっつけた VIEW を作ります。

create view [V_受注] as 
select 
  [受注].[受注ID]
  , [受注].[受注日] 
  , [受注].[得意先コード] 
  , [取引先].[取引先名] as [得意先名] 
  , [受注].[営業担当者コード] 
  , [担当者].[担当者名] as [営業担当者名] 
from 
  [受注] inner join [担当者] on 
    [受注].[営業担当者コード] = [担当者].[担当者コード]
  inner join [取引先] on 
    [受注].[得意先コード] = [取引先].[取引先コード]

この VIEW に対して同じ条件で取得するカラムを変えて動かしたクエリの実行プランを見てみましょう。

-- 全カラム取得
select * 
from [V_受注] 
where [受注ID] < 'J01000' 
-- 受注と取引先だけ
select [受注ID], [受注日], [得意先コード], [得意先名] 
from [V_受注] 
where [受注ID] < 'J01000'
-- 受注だけ
select [受注ID], [受注日], [得意先コード], [営業担当者コード] 
from [V_受注] 
where [受注ID] < 'JT01000'


取得するカラムによって実行プランが変わってますね!*1
ビューの解決
不要なカラムは引っ張らないように & 実行プランは確認しましょう。

*1:今回はきれいに実行プランが変わる VIEW にしています。VIEW の結合条件等によっては、こんなきれいに実行プランが変わるとは限りません。