在确定查询性能方面有三个有用的测量:实耗时间、I/O和CPU
一. 找到实耗时间的三种方法:
1. 查看SQL查询视窗的右下角显示的时间;
2. SELECT语句之前3. 循环,大型脚本或存储过程要找出哪一部分运行时间最长, 可以用以下语句:
二. 测量CPU时间的三个方法;
1. 执行“SET STATISTICS TIME ON”语句;
2. 这个方法会受SQL Server上运行的其它东西影响, 如果你有一个具有较少活动的单独系统,那么它仍然是一个测量CPU消耗的方法。
3. 一个更精确测量CPU使用的方法是使用SQL Server profiler.
三. I/O
当你调整你的查询时,你要将执行以生成一个结果集的逻辑I/O和物理I/O操作的数目降低到最小.
1. 使用“SET STATISTICS IO ON”语句;
除去因为你的查询已经存在于缓冲器缓存中而在页面请求时会发生的I/O计数差异,你可以在运行每一个测试之前执行“DBCC DROPCLEANBUFFER”命令; 这将使你的查询运行时具有一个干净的缓冲池而不必停止和重启SQL server。
2. 使用SQL Server profiler.
四. 脚本
1. 找出开销最大的前 50个查询
2. 显示每一个存储过程执行了多少逻辑 I / O操作来衡量它的性能.
查看avg_logical_reads列,你可以了解到哪些存储过程的效率比较低。
(dbid=32767, 表示系统数据库, 即资源数据库)
微软把函数,扩展存储过程,以及CLR存储过程归为一个名为" Proc "的 对象类型, 有时候多个计划存在于同一储存过程的程序缓存中.
因此需要做where部分的处理.
3. 计算每个存储过程平均耗费时间, 或者说执行时, 用户的等待时间
4.查看索引体积