使用的查询:
(从网上某处复制了缓存清理代码)
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC DROPCLEANBUFFERS
GO
SET STATISTICS TIME ON;
SET STATISTICS IO ON;
select a.a,a.b from t1 a JOIN t1 b on a.i=b.i
t1 的架构是
CREATE TABLE [dbo].[t1](
[i] [int] NULL,
[a] [varchar](1000) NULL,
[b] [varchar](1000) NULL,
[c] [varchar](1000) NULL
) ON [PRIMARY]
并且 t1 填充了随机数据(I
范围从 0-11 和 a,b,c 填充了NEWID()
值)
它包含大约 900 行(准确地说是 934 行)
执行查询的结果是:
SQL Server 解析和编译时间:CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。
SQL Server 执行时间:CPU 时间 = 0 毫秒,经过时间 = 55 毫秒。SQL Server 解析和编译时间:CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。
SQL Server 执行时间:CPU 时间 = 0 毫秒,经过时间 = 4 毫秒。SQL Server 解析和编译时间:CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。
SQL Server 执行时间:CPU 时间 = 0 毫秒,经过时间 = 1 毫秒。SQL Server 解析和编译时间:CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。
SQL Server 执行时间:CPU 时间 = 0 毫秒,经过时间 = 0 毫秒。
SQL Server 执行时间:CPU 时间 = 0 毫秒,经过时间 = 0 毫秒。
(受影响的 115974 行)表“工作表”。扫描计数 0,逻辑读取 0,物理读取 0,预读读取 0,lob 逻辑读取 0,lob 物理读取 0,lob 预读读取 0。表 't1'。扫描计数 2,逻辑读取 32,物理读取 0,预读读取 20,lob 逻辑读取 0,lob 物理读取 0,lob 预读读取 0。
SQL Server 执行时间:CPU 时间 = 79 毫秒,经过时间 = 15858 毫秒。
据我了解,干净的缓存应该会导致大量物理读取,不是吗?
(SQL Server 2012 在 Win 8 主机上的 Hyper V 上运行的 Win 8 来宾 VM 上运行)