SQL Server性能优化(1)使用SET函数

在一切开始之前,先看下微软的建议:在系统的整体性能优化里面, TSQL优化优先级并不是最高的。

image

本文包括四部分:

  • SET STATISTICS TIME ON
  • SET STATISTICS IO
  • SET SHOWPLAN_ALL ON
  • SET STATISTICS PROFILE ON

SET 函数主要是为了显示sql执行时的查询计划,CPU、硬盘使用情况。

1. SET STATISTICS TIME ON:当 SET STATISTICS TIME 为 ON 时,会显示语句的时间统计信息。为 OFF 时,不显示时间统计信息。

SET STATISTICS TIME ON
select top 10000 * from Measure_heat
select top 10000 * from Measure_heat order by id desc

显示结果:

image

2. SET STATISTICS IO:生成的磁盘活动量的信息。

SET STATISTICS IO ON 
select top 10000 * from Measure_heat
select top 10000 * from Measure_heat order by id desc

显示结果:

image

对于逻辑读取、物理读取,lob读取等概念,微软的解释是:

image

对于lob的概念,我在网上找了很久没有找到,最后在msdn官方的Libiary里发现,再一次证明查资料还得去官方网站啊。

3. SET SHOWPLAN_ALL ON。 如果要显示语句在查询时执行计划等,可以使用该语句显示。执行计划是我们进行索引优化的有力依据。

SET SHOWPLAN_ALL On
select top 10000 * from Measure_heat

显示结果:

image

上图的结果比较难看明白,我们可以用图形可视化的方式来查看,显示更直观一些。

image

4. 还有一些与性能分析有关的SET函数,如

SET STATISTICS XML  --XML格式输出查询计划
SET STATISTICS PROFILE  ON --执行的各个查询都返回其常规结果集

比如profile 设为on时,结果同SET SHOWPLAN_ALL ON的结果很像,多了rows和Executes两列,分别指个运算符生成的实际行数和运算符执行的次数:

image

posted @   悉路  阅读(1692)  评论(2编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示