執行計畫

改進 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 中的查詢效能

排序運算子範例

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...