Transact-SQL スニペット
Visual Studio はコードスニペットが搭載されています。コードスニペットは ホットキー、ショットカットキーなどを使用してコード ファイルに挿入できるコードの小さなブロックです。try-catch-finally などをソース中に埋め込むなど、ソースを書くときに頻用するコードサンプルを登録する機能です。
Transact-SQL にも同様の機能が存在するんですね。知りませんでした。設定方法は下記の通りです。今回の設定例はチューニング時に(個人的に?)頻用するインデックス不足を抽出する SQL を設定してみたいと思います。
- SQL Server Management Stuido を起動します。
- ツール → コードスニペットマネージャー をクリックします。
- 任意の場所に TuningSQL というフォルダを作成します。
- その配下に、 MissingIndex.snippet というファイルを作成します。*.snippet ファイルの中身は下記の通りです。
--------
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<_locDefinition xmlns="urn:locstudio">
<_locDefault _loc="locNone"/>
<_locTag _loc="locData">Title</_locTag>
<_locTag _loc="locData">Description</_locTag>
<_locTag _loc="locData">Author</_locTag>
<_locTag _loc="locData">ToolTip</_locTag>
<_locTag _loc="locData">Default</_locTag>
</_locDefinition>
<CodeSnippet Format="1.0.0">
<Header>
<Title>MissingIndex</Title>
<Shortcut></Shortcut>
<Description>MissingIndexのコード スニペット。</Description>
<Author>Ryu</Author>
<SnippetTypes>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>MissingIndex</ID>
<ToolTip>MissingIndex</ToolTip>
<Default>MissingIndex</Default>
</Literal>
</Declarations>
<Code Language="SQL"><![CDATA[
SELECT group_handle,i.*, gs.*
FROM sys.dm_db_missing_index_group_stats gs
INNER JOIN
sys.dm_db_missing_index_groups g
ON gs.group_handle = g.index_group_handle
INNER JOIN
sys.dm_db_missing_index_details i
ON i.index_handle = g.index_handle
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
--------
※注意※<Title>:インテリセンス上に表示される文言です。わかりやすい名前を指定したほうがいいです。<Description>:スニペット内容の説明です。<Code Language="SQL">:展開する内容を記述します。<SnippetType>:展開のタイプです。SurroundWithは選択したコードのまわりにスニペットを配置します。 - ファイルを保存します。
- 追加ボタンをクリックし、TuningSQL フォルダを選択します。コードスニペットマネージャーに TuningSQL が追加されますので、OK ボタンをクリックします。
- SQL Management Studio のクエリエディタ上で、Ctrl + K,S を押します。
- TuningSQL を↓キーで選択し、エンターキーを押下します。
- MissingIndexを↓キーで選択し、エンターキーを押下します。不足しているインデックスを抽出する SQL文 が展開されます。
本来想定されていた使い方なのかはわかりませんが、チューニング調査に使用するSQL数は数が多いので、このような機能が使用できるのは非常に楽ですね。
※この記事を書き終わったあとに、Visual Studio にもスニペットデザイナとかあるので、SQL もあるのかなと探してみたらやっぱりありました。ここです。そりゃ、ありますよね。ついでにですが、Visual Studio 2012 のコードスニペットエディタはここです。