执行计划

改进 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 中的查询性能

¡Vamos a practicar!

改进 SQL Server 中的查询性能

Preparing Video For Download...