查看执行时间和CPU占用时间:
SET STATISTICS Time On
--查询语句
SET STATISTICS Time Off
显而易见,时间越少,性能越好。
查看查询对I/0的操作情况:
SET STATISTICS IO ON
--查询语句
SET STATISTICS IO Off
下面对这些参数解释下:
逻辑读取: 从缓存中读取数据,逻辑读表示者实际的查找数据,当逻辑读减少时,其效率就越高,查询的速度就越快。
物理读取: 查询计划开启后,如果发现缓存缺少查询所需要的数据,让缓存再次去读硬盘数据,这就是物理读取,硬盘读取速度会差内存读取速度几个数量级,物理读取是比较慢的。
对于物理读取的比较看下具体数据:
A: 先清除缓存查询,这个时候缓存中没有数据,会从硬盘读数据,产生物理查询。
--清除缓存
DBCC DROPCLEANBUFFERS
--开启IO统计
SET STATISTICS IO ON
--开启执行时间和CPU占用时间查询
SET STATISTICS Time ON
SELECT * From ScoreTemp
SET STATISTICS Time Off
SET STATISTICS IO Off
B: 不清除缓存,直接查询,表数据无变化,会从上次A查询的缓存中查询数据,不会产生物理查询。相对A物理查询时间会得到优化。
预读: 用于估计信息,估算从硬盘读取数据到缓存的大小。
上面两种方法都是写SQL脚本执行查看的,如果忘了脚本怎么办?在SQL Server查询中可以单独打开这两个方法去执行统计,见下:
设置好后,直接在当前查询窗口查询数据后,统计信息会自动统计。