都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

Transact-SQL スニペット

 Visual Studioコードスニペットが搭載されています。コードスニペットは ホットキー、ショットカットキーなどを使用してコード ファイルに挿入できるコードの小さなブロックです。try-catch-finally などをソース中に埋め込むなど、ソースを書くときに頻用するコードサンプルを登録する機能です。

 Transact-SQL にも同様の機能が存在するんですね。知りませんでした。設定方法は下記の通りです。今回の設定例はチューニング時に(個人的に?)頻用するインデックス不足を抽出する SQL を設定してみたいと思います。

  1. SQL Server Management Stuido を起動します。
  2. ツール → コードスニペットマネージャー をクリックします。
  3. 任意の場所に TuningSQL というフォルダを作成します。
  4. その配下に、 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は選択したコードのまわりにスニペットを配置します。
  5. ファイルを保存します。
  6. 追加ボタンをクリックし、TuningSQL フォルダを選択します。コードスニペットマネージャーに TuningSQL が追加されますので、OK ボタンをクリックします。

    f:id:koogucc11:20130527223553j:plain 

  7. SQL Management Studio のクエリエディタ上で、Ctrl + K,S を押します。

    f:id:koogucc11:20130527224033j:plain

  8. TuningSQL を↓キーで選択し、エンターキーを押下します。

    f:id:koogucc11:20130527224205j:plain

  9. MissingIndexを↓キーで選択し、エンターキーを押下します。不足しているインデックスを抽出する SQL文 が展開されます。

    f:id:koogucc11:20130527224353j:plain

本来想定されていた使い方なのかはわかりませんが、チューニング調査に使用するSQL数は数が多いので、このような機能が使用できるのは非常に楽ですね。

 

※この記事を書き終わったあとに、Visual Studio にもスニペットデザイナとかあるので、SQL もあるのかなと探してみたらやっぱりありました。ここです。そりゃ、ありますよね。ついでにですが、Visual Studio 2012 のコードスニペットエディタはここです。