统计IO:
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 9, logical reads 90450, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
所以,一些问题
1.为什么Statistics IO的读取次数比Profiler高?。
对于KB314648,如果Profiler报告的数字大于统计信息IO,则可以。但是Profiler 92283
在描述的查询中显示 读取,执行相同。这是否意味着Profiler不计算工作文件/工作表读取次数?
2.“工作表”和“工作文件”之间有什么区别
我发现:
- 工作文件可用于存储哈希联接和哈希聚合的临时结果。
- 工作表可用于存储查询假脱机,lob变量,XML变量和游标的临时结果。
它们之间有物理上的区别吗?
3.为什么在这种情况下会有“工作台”?
如果逻辑读为0,为什么我根本没有工作表?仅将其包含在统计数据IO中是因为可能需要它(如果估算错误)?
在Technet上找到的描述似乎含糊。
4.工作文件上的“物理读物”是什么意思?
这是否意味着没有足够的内存分配给查询,因此在执行查询时必须将数据写入磁盘(哈希匹配警告为黄色)?我可以假设每当我在统计信息IO中看到带有物理读取的工作表/工作文件时,都没有足够的内存分配给查询,并且某些查询的中间结果必须被写入tempdb磁盘中?而且每当我仅看到逻辑读操作时,就会使用RAM?
5.一个“工作文件”是指恰好一个表用于一种目的?
如果有一个以上的工作文件/工作表,那么我不知道要使用哪种操作?