SQL Server 执行计划(8) - 使用 SQL 执行计划进行查询性能调优

在本系列的前几篇文章(见底部索引)中,我们介绍了SQL 执行计划的多个方面,我们讨论了执行计划是如何在内部生成的,不同类型的计划,主要组件和运算符以及如何阅读和分析使用不同工具生成的计划。在本文中,我们将介绍如何使用执行计划来调整 T-SQL 查询的性能。

SQL Server 查询性能调优被认为是数据库管理员的首要任务,也是一场无休止的战斗,以使其托管系统获得最佳性能,同时消耗最少的资源。任何数据库管理员在考虑查询性能调优时都会想起的第一种方法就是使用 SQL 执行计划。这是因为SQL 执行计划可以指导我们如何去优化查询。SQL 执行计划中清晰显示了查询在内部执行的方式,执行路线图、以及整体查询中执行成本最高的部分、同时还提供了如何设计最佳索引的提示信息。

SQL 执行计划中存在许多通用迹象表明查询中可能存在性能不佳的地方。例如,在执行计划中成本最高的运算符,是排除查询性能故障的良好起点。此外,如果执行计划中出现了一个粗箭头后面跟随着一个细箭头的状况,表示在此处大量数据被处理,同时从一个运算符流向另一个运算符,而最终结果只是返回少量记录。这通常表明查询关联数据表中缺乏合适索引或存在数据乘法性能问题。

了解了本系列中讨论的每个运算符的作用后,你可以识别出不必要的额外的运算符,这些运算符会增加开销而降低查询性能。此外,如果存在扫描整个表或索引的 扫描(Scan) 运算符,在大多数情况下都表明缺少索引、索引使用不当或查询不包含过滤条件。查询性能问题的另一个信号是执行计划警告。这些消息提示了需要解决多种性能问题,例如 TempDb 溢出问题、缺少索引或错误的基数估计等。

我们通过以下示例来深入解如何使用 SQL 执行计划来调整 SQL 查询的性能。首先,我们将使用下面的 CREATE TABLE T-SQL 语句创建两个新表:

CREATE TABLE Employee_Main
( Emp_ID INT IDENTITY (1,1) PRIMARY KEY,
  EMP_FirsrName VARCHAR (50),
  EMP_LastName VARCHAR (50),
  EMP_BirthDate DATETIME,
  EMP_PhoneNumber VARCHAR (50),
  EMP_Address VARCHAR (MAX)  
)
GO
CREATE TABLE EMP_Salaries
( EMP_ID INT
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值