実行プラン

SQL Serverでクエリ性能を改善する

Dean Smith

Founder, Atamai Analytics

最適化フェーズ

最適化フェーズ

SQL Serverでクエリ性能を改善する

最適化フェーズ

説明付きの最適化フェーズ

評価されるコスト指標:

  • プロセッサ使用率
  • メモリ使用量
  • データページ読み取り
SQL Serverでクエリ性能を改善する

最適化フェーズ

最適化フェーズと実行エンジン

評価されるコスト指標:

  • プロセッサ使用率
  • メモリ使用量
  • データページ読み取り
SQL Serverでクエリ性能を改善する

実行プランからの情報

実行プランで分かること:

  • インデックス使用の有無
  • 結合の種類
  • 次の位置と相対コスト
    • フィルター条件
    • 並べ替え
    • 集約
SQL Serverでクエリ性能を改善する

SSMS の推定実行プラン

 

SSMS ツールバーの推定実行プラン項目

SQL Serverでクエリ性能を改善する

SSMS の推定実行プラン

 

SSMS ツールバーの推定実行プラン項目(ツールチップ付き)

SQL Serverでクエリ性能を改善する

SSMS での実行プラン表示

SSMS の実行プラン

SQL Serverでクエリ性能を改善する

オペレーター統計

実行プランのオペレーター統計

SQL Serverでクエリ性能を改善する

実行プランの読み方

実行プランのオペレーター

SQL Serverでクエリ性能を改善する

インデックスの例

SELECT * 
FROM Customers
WHERE CustomerID = 'PARIS';

テーブル スキャン オペレーター

SELECT * 
FROM CustomersCI
WHERE CustomerID = 'PARIS';

クラスタ化インデックス シーク オペレーター

SQL Serverでクエリ性能を改善する

Sort オペレーターの例

SELECT FruitName, FruitType
FROM Fruits1

UNION

SELECT FruitName, FruitType
FROM Fruits2;

UNION を使った実行プラン

SELECT FruitName, FruitType
FROM Fruits1

UNION ALL

SELECT FruitName, FruitType
FROM Fruits2;

UNION ALL を使った実行プラン

SQL Serverでクエリ性能を改善する

同じ実行プランか?

SELECT * 
FROM Customers
WHERE CustomerID IN 
    (SELECT CustomerID 
     FROM Orders);

IN と EXISTS の実行プラン

SELECT * 
FROM Customers c
WHERE EXISTS
    (SELECT 1 
     FROM Orders o 
     WHERE c.CustomerID = o.CustomerID);

IN と EXISTS の実行プラン

SQL Serverでクエリ性能を改善する

演習に進みましょう!

SQL Serverでクエリ性能を改善する

Preparing Video For Download...