SQL Server Management Studio の知っておいたほうが良い機能について挙げてみる - その7 - ( 2つの実行プランの比較してみる )
灼熱の日曜日。Cortana さんに今日の気温を聞いてみました。40℃!
別のサイトで確認。35℃。それでも暑い! Cortana さん暑さでダウンでしょうか(笑)
梅雨が終わってしまったような天気です。今週も暑いですね。
今回は非常に地味ですが、実行プランの比較機能についてです。SQL Server Management Studio(13.0.15000.23)で、WideWorldImporters を使ってためしみます。まず、下記のクエリを 実行プランを採取するために、SQL Server Management Studio で実行してみましょう。
SELECT i.InvoiceID, i.InvoiceDate, il.InvoiceLineID, il.StockItemID, il.Description, il.Quantity, il.UnitPrice, il.TaxRate, il.TaxAmount, c.CustomerID, c.CustomerName FROM Sales.Invoices i INNER JOIN Sales.InvoiceLines il ON i.InvoiceID = il.InvoiceID LEFT OUTER JOIN Sales.Customers c ON i.CustomerID = c.CustomerID WHERE i.InvoiceID IN(1,2,3,4,5,6,7,8,9,10) ORDER BY i.InvoiceID ASC, il.InvoiceLineID ASC
実行プラン上で右クリックし、実行プランに名前を付けて保存をクリックします。実行プランを保存しましょう。
次に、比較対象の実行プランを取得するために、下記のクエリを SQL Server Management Studio で実行してみましょう。(使用するインデックスをスキャンするように変更しています。)
SELECT i.InvoiceID, i.InvoiceDate, il.InvoiceLineID, il.StockItemID, il.Description, il.Quantity, il.UnitPrice, il.TaxRate, il.TaxAmount, c.CustomerID, c.CustomerName FROM Sales.Invoices i WITH(INDEX(FK_Sales_Invoices_CustomerID)) INNER JOIN Sales.InvoiceLines il ON i.InvoiceID = il.InvoiceID LEFT OUTER JOIN Sales.Customers c ON i.CustomerID = c.CustomerID WHERE i.InvoiceID IN(1,2,3,4,5,6,7,8,9,10) ORDER BY i.InvoiceID ASC, il.InvoiceLineID ASC
先ほどと同様に、実行プラン上で右クリックし、実行プランに名前を付けて保存をクリックします。実行プランを保存しましょう。
保存した実行プランのどちらか一方を開きます。実行プラン上で、右クリックし、プラン表示の比較をクリックします。もう一つの実行プランを開きましょう。
二つの実行プランが上下に配置され、実行プランの比較が非常に容易です。
右下の青枠部分ですが、非常に便利です。同一の SQL で実行プランが変化した時などに、どのように結合処理が変化したかなど一目で把握することができます。これ、地味に便利です。どのバージョンで機能追加されたんだろう。
Download SQL Server Management Studio July 2016 になってますね。早速ダウンロード。
Lenovo yoga mouse ぽちった。
[asin:B00QUXSR0Q:detail]
[asin:B00ITEUUKO:detail]